如何使用iTextSharp加入两个PDF?

时间:2011-01-05 17:34:07

标签: c# .net pdf itextsharp itext

我尝试使用this tutorial作为基础,但它在下面指定的行引发了一个空引用异常。我应该以不同的方式做这件事吗?如果没有,为什么它会抛出一个空引用异常(pagecb都不为null)。代码:

        string filePath = @"c:\temp\test_new.pdf";
        string attachPath = @"c:\temp\test.pdf";

        Console.WriteLine("Begin!");
        Document d = new Document();

        if(File.Exists(filePath)){File.Delete(filePath);}

        FileStream fs = new FileStream(filePath, FileMode.Create);

        PdfWriter pw = PdfWriter.GetInstance(d, fs);
        d.Open();
        d.Add(new Paragraph("New document!  Now lets add an attachment!"));

        PdfReader pRdr = new PdfReader(new FileStream(attachPath,FileMode.Open));
        PdfReaderContentParser parser = new PdfReaderContentParser(pRdr);

        MemoryStream ms = new MemoryStream();
        PdfWriter writer = PdfWriter.GetInstance(d, ms);
        writer.Open();
        PdfContentByte cb = writer.DirectContent;
        PdfImportedPage page;
        int rotation;
        d.SetPageSize(PageSize.LETTER);
        for (int i = 1; i <= pRdr.NumberOfPages; i++)
        {
            d.NewPage();
            page = writer.GetImportedPage(pRdr, i);
            rotation = pRdr.GetPageRotation(i);
            if (rotation == 90 || rotation == 270)
            {
                cb.AddTemplate(page, 0, -1.0F, 1.0F, 0, 0, pRdr.GetPageSizeWithRotation(i).Height);
            }
            else
            {
  /*NULL EXCEPTION HERE!!!*/cb.AddTemplate(page, 1.0F, 0, 0, 1.0F, 0, 0);  //NULL EXCEPTION HERE!!!

            }
        }

3 个答案:

答案 0 :(得分:1)

1)使用PdfCopy而非PdfWriter。 PdfWriter用于从Document写入生成的PDF。 PdfCopy用于将页面从A复制到B.

2)如果你的问题是异常的结果请发布异常。它会消除你在评论中看到的大部分猜测。

3)PdfImportedPage只是该页面的内容和资源。您将丢失注释(表单字段等),书签等。 PdfCopy可以帮助解决其中一些问题,但不是全部。

答案 1 :(得分:0)

行。我可能因为没有回答你的问题而受到抨击,但有一种更简单的方法可以合并两个PDF:不要使用iTextSharp,请使用iTextDotNet

我发现了一条关于如何操作的帖子:http://alex.buayacorp.com/merge-pdf-files-with-itextdotnet-and-net.html

我记得这是因为几年前我不得不这样做。它确实有效。

答案 2 :(得分:0)

查看我的简单embPDFUtils库,您可以在其中通过XML配置文件配置合并和拆分过程。有一些方法可以连接pdf文件,拆分它们并从图像创建pdf文件。这是免费的。请在此处查看:http://blog.mecum.biz/2011/11/how-master-xml-and-mistress-xsd-helped-itextsharp-out-of-the-claws-of-hippi-o-cratic-chaos-huggermugger/