none
如何利用 iTextSharp往已经存在的PDF文档中加入图片 RRS feed

  • 问题

  • 自己用C#尝试了一天多也没有实现往现有的PDF中添加一张新的图片而不覆盖掉原有的文件。

    主要是想实现往现有的PDF文件中添加新的图片。看了很多方法都是新建PDF文档并且添加新的图片到新的PDF中,这种很容易实现。

    我写了一部分代码可供参考,希望各位大神帮忙指点迷津:

    string imagePath =  "save";  //要插入的图片

    PdfReader reader = new PdfReader(@"C:\Users\Desktop\PDF.pdf");     //读取现有的PDF文档

    int n = reader.NumberOfPages;    //获取页码        

    iTextSharp.text.Rectangle psize = reader.GetPageSize(1);      //获取第一页      

    float width = psize.Width;            

    float height = psize.Height;                        

    Document document = new Document(psize, 50, 50, 50, 50);     //设置位置       

    PdfWriter writer = PdfWriter.GetInstance(document,new FileStream(filename, FileMode.Append));            

    document.Open();            

    iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(imagePath);           //插入图片

    img.SetAbsolutePosition(440, 800);            

    writer.DirectContent.AddImage(img);         //添加图片   

    document.Close();

    希望各位大神能够给出一段完整的C#代码实现添加图片到已经存在的PDF中。

    小弟在这里先感谢各位了

    2015年3月26日 16:47

答案

  • 感谢您的答复,我已经找到了一个比较好的方法,是利用插件Spire.PDF for .NET,感觉这个实现起来会比iTextSharp简单和方便。再次感谢您的答复。


    //Create a pdf document.
                PdfDocument doc = new PdfDocument();
                doc.LoadFromFile(@"sample.pdf");
                //get the page
                PdfPageBase page = doc.Pages[0];
    
                //get the image
                PdfImage image = PdfImage.FromFile(@"sample.jpg");
                float width = image.Width * 0.75f;
                float height = image.Height * 0.75f;
                float x = (page.Canvas.ClientSize.Width - width) / 2;
    
                // insert image
    
                page.Canvas.DrawImage(image, x, 60, width, height);
    
                //Save pdf file.
                doc.SaveToFile("Sample.pdf");
                doc.Close();
    
                //Launching the Pdf file.
                System.Diagnostics.Process.Start("Sample.pdf");
                Console.ReadKey();
    2015年4月2日 1:00

全部回复

  • 微软不支持iText公司的产品。请去www.itextpdf.com/support寻求官方支持。


    Visual C++ MVP

    2015年3月27日 0:25
    版主
  • 感谢您的答复,我已经找到了一个比较好的方法,是利用插件Spire.PDF for .NET,感觉这个实现起来会比iTextSharp简单和方便。再次感谢您的答复。


    //Create a pdf document.
                PdfDocument doc = new PdfDocument();
                doc.LoadFromFile(@"sample.pdf");
                //get the page
                PdfPageBase page = doc.Pages[0];
    
                //get the image
                PdfImage image = PdfImage.FromFile(@"sample.jpg");
                float width = image.Width * 0.75f;
                float height = image.Height * 0.75f;
                float x = (page.Canvas.ClientSize.Width - width) / 2;
    
                // insert image
    
                page.Canvas.DrawImage(image, x, 60, width, height);
    
                //Save pdf file.
                doc.SaveToFile("Sample.pdf");
                doc.Close();
    
                //Launching the Pdf file.
                System.Diagnostics.Process.Start("Sample.pdf");
                Console.ReadKey();
    2015年4月2日 1:00