首页 文章

iTextSharp如何将图像添加到现有PDF并将其提取

提问于
浏览
0

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

目前我试图通过 stamper 添加图像:

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();
                    }
                }
            }

问题是新图像 just 覆盖了pdf的第一页并保存!
为什么会这样?另外,我如何从pdf文件中提取这些图像!?
谢谢!!

1 回答

  • 1

    通常情况下,我会将此问题标记为重复,因为您的问题之前已得到解答,但您不是在问一个问题,而是使用您的帖子提出两个不同的问题,我必须提供一个答案链接到答案对这两个问题 . 我向SO用户提前道歉,他们考虑回答之前已经回答的问题,因为没有在SO上做过 .

    Question #1:

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

    这是因为您故意"stamp"第1页上的图像 . 您使用 stamper.GetOverContent(1); 获得表示第1页内容的画布,然后在该现有内容上添加内容 .

    实际上,您要插入一个新页面,如我在"approach 2"中对此问题的回答所述:How to add a cover/PDF in a existing iText document

    你想要这样的东西:

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

    在第一行中,我们创建了图像实例 . 在第二行中,我们将页面插入现有文档 . 我们选择它作为第1页,我们希望它与图像具有相同的大小(类 Image extends Rectangle ) . 在第三行中,我们获取新(空白)页面的内容1.您写了"where absolution position is Height/Width of image!"我认为这是您的问题中的错误,因为它不可见:它将被添加到页面的可见区域之外 .

    Question #2:

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

    请阅读以下答案:

相关问题