当前位置:  开发笔记 > 程序员 > 正文

如何在现有PDF中插入带有iTextSharp的图像?

如何解决《如何在现有PDF中插入带有iTextSharp的图像?》经验,为你挑选了1个好方法。

我有一个现有的PDF,我可以使用FdFWriter输入到文本框.它运作良好.现在我有了一张图片.我已阅读文档并查看了许多示例,但它们都创建了新文档并插入了图像.我想拍摄现有的PDF并将图像插入图像字段或按钮的图标图像.我试过但它破坏了文件.

我需要能够获取现有文档并在其上放置图像.我不想打开,阅读,替换和删除原始文件.此原始更改和名称"原始"仅表示此上下文中的源文件.像这样的许多PDF文件需要图像.

感谢您的任何帮助.

编辑 - 我非常感谢下面的代码.它工作得很好,但对我来说问题是现有的PDF上有数字签名.当像这样复制文档(到result.pdf)时,这些签名虽然仍然存在,但具有不同的字节数或其他已损坏的项.这意味着签名虽然出现在result.pdf上,但它们旁边有一个图标,表示"无效签名".

如果它很重要我使用Topaz签名板来创建我的签名,这有自己的安全性.仅仅复制PDF不会破坏它,但下面的过程将会.

我试图将图像放在现有文档上,而不是它的副本,在这种情况下很重要.

此外,签名,我的意思是手写,而不是密码.

再次感谢你.

编辑 - 可以使用PdfSignatureAppearance吗?

编辑 - 我似乎能够做到:

var stamper = new PdfStamper(reader,outputPdfStream,'1',true);



1> Darin Dimitr..:

如果要更改现有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文档中查看转换矩阵.


数字签名可确保文档未被篡改.如果不重新签名文档,则无法向其添加内容.
推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有