iTextSharp如何将图像添加和提取到现有PDF中

本文关键字:PDF 提取 图像 添加 iTextSharp | 更新日期: 2023-09-27 18:21:24

我正在尝试将iTextSharp用于移动应用程序
所以我正在创建pdf文件,并将此pdf与图像一起附加,其中绝对位置是图像的高度/宽度
所以现在,我需要将图像(对于每个图像,我应该使用新页面)添加到我现有的pdf文件中,我也想知道如何从我的pdf文件提取这些图像!

目前,我试图通过压模:添加图像

 using (System.IO.Stream inputPdfStream = new FileStream(PathOfPdf, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                using (System.IO.Stream inputImageStream = new FileStream(PathOfImage, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    using (System.IO.Stream outputPdfStream = new FileStream(PathOfPdf.Substring(0, PathOfPdf.Length - 4) + "T.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(image.Width, image.Height);
                        pdfContentByte.AddImage(image);
                        stamper.Close();
                    }
                }
            }  

问题是,新图像只是覆盖pdf的第一页并保存它
为什么会发生这种情况?此外,我如何从pdf文件中提取这些图像
谢谢

iTextSharp如何将图像添加和提取到现有PDF中

通常,我会将这个问题标记为重复问题,因为你的问题以前已经回答过,但你不是在问一个问题,而是在使用你的帖子问两个不同的问题时,我必须提供一个带有这两个问题答案链接的答案。我提前向SO用户道歉,他们认为之前已经回答的问题没有在SO上完成。

问题1:

问题是您的图像覆盖了现有内容,而不是出现在新页面上。

这是由于您故意在第1页上"盖章"图像造成的。您将获得一个画布,该画布使用stamper.GetOverContent(1);表示页面1的内容,然后在现有内容之上添加内容。

事实上,你想插入一个新的页面,正如我在回答这个问题时所解释的"方法2":如何在现有的iText文档中添加封面/PDF

你想要这样的东西:

Image image = Image.GetInstance(inputImageStream);
stamper.insertPage(1, image);
PdfContentByte page1 = stamper.GetOverContent(1);
image.SetAbsolutePosition(0, 0);
page1.AddImage(image);

在第一行中,我们创建图像实例。在第二行中,我们在现有文档中插入一页。我们选择它作为第1页,并希望它具有与图像相同的大小(类Image扩展了Rectangle)。在第三行中,我们获取新(空白)页面1的内容。你写了"绝对位置是图像的高度/宽度!"我认为这是你的问题中的一个错误,因为这没有多大意义。我们希望在位置0添加图像,0。如果我们使用图像的宽度和高度,图像将不可见:它将被添加到页面的可见区域之外。

问题2:

如何从现有的PDF文档中提取图像?

请阅读以下内容的答案:

  • 使用iTextSharp提取图像
  • 使用iText从PDF坐标中提取图像
  • 以PDF格式从特定页面提取图像