如何在现有PDF中插入iTextSharp的图像?
我有一个现有的PDF,我可以使用FdFWriterinput到文本框。 它运作良好。 现在我有一个形象。 我已阅读文档并查看了许多示例,但它们都创build了新文档并插入图像。 我想采取一个现有的PDF,并插入图像到图像领域或button的图标图像。 我已经尝试过,但它腐败的文件。
我需要能够把一个现有的文件,并把它的形象。 我不想打开,阅读,replace和删除原件。 这个原始的改变和名字“原始”仅仅意味着在这个上下文中的源文件。 有许多像这样的PDF文件需要一个图像。
感谢您的任何帮助。
编辑 – 我非常感谢下面的代码。 它工作的很好,但对我来说问题是,现有的PDF上有数字签名。 当文档像这样复制(到result.pdf)这些签名,虽然仍然存在,有不同的字节计数或其他项目已损坏。 这意味着签名在result.pdf上显示时,在他们旁边有一个图标,表示“无效签名”。
万一它很重要,我正在使用黄玉签名板来创build我自己的签名,这是它自己的安全。 仅仅复制PDF不会破坏它,但下面的过程将会。
我试图把这个形象放在现有的文件上,而不是它的副本,在这种情况下是重要的。
另外,签名,我的意思是手写的,而不是PIN码。
再次感谢你。
编辑 – 可以使用PdfSignatureAppearance?
编辑 – 我似乎可以做到这一点:
var stamper = new PdfStamper(reader,outputPdfStream,'1',true);
如果您想更改现有PDF文件的内容并添加额外的内容(如水印,页码,额外的标题),那么PdfStamper就是您需要的对象。 我已经成功地使用下面的代码插入到一个现有的PDF文件的图像到一个给定的绝对位置:
using System.IO; using iTextSharp.text; using iTextSharp.text.pdf; class Program { static void Main(string[] args) { using (Stream inputPdfStream = new FileStream("input.pdf", FileMode.Open, FileAccess.Read, FileShare.Read)) using (Stream inputImageStream = new FileStream("some_image.jpg", FileMode.Open, FileAccess.Read, FileShare.Read)) using (Stream outputPdfStream = new FileStream("result.pdf", FileMode.Create, FileAccess.Write, FileShare.None)) { var reader = new PdfReader(inputPdfStream); var stamper = new PdfStamper(reader, outputPdfStream); var pdfContentByte = stamper.GetOverContent(1); Image image = Image.GetInstance(inputImageStream); image.SetAbsolutePosition(100, 100); pdfContentByte.AddImage(image); stamper.Close(); } } }
当你插入图片时,你可以调整它的大小。 您可以在iTextSharp文档中查看转换matrix 。
这是一个类似的例子,它使用压模在页面上插入图像:
曼联iTex邮件列表发布
我可以解决我的问题,只需添加以下行到我的签名代码添加图像
var image = iTextSharp.text.Image.GetInstance(@"C:\Users\sushil\Documents\sansign.jpg"); appearance.Acro6Layers = true; appearance.SignatureGraphic = image; appearance.SignatureRenderingMode = PdfSignatureAppearance.RenderingMode.GRAPHIC_AND_DESCRIPTION;
当我用可见的数字签名签署文件时,现在我可以同时拥有图像和数字签名属性
pdftk可以做到这一点。 这不是一个库,但你可以很容易地从你的代码调用它作为一个.exe。
请参阅stamp
和background
命令: http : //www.pdflabs.com/docs/pdftk-man-page/
参考: 如何做一个PDF上的邮件合并?