将页面从pdf文件复制到新文档

时间:2018-04-12 14:35:51

标签: c# pdf itext itext7

我正在尝试从现有的.pdf文件中复制一个页面并将其粘贴到这样的新文档中:

     using (var writer = new PdfWriter(OutputFile))
        {
          var reader = new PdfReader("Templates//PDF_Template_Empty.pdf");
          PdfDocument template = new PdfDocument(reader);
          var titlepage = template.GetPage(1);
          using (var pdf = new PdfDocument(writer))
            {
                pdf.AddPage(titlepage); // exception

但在.AddPage()它会引发此异常:

  

iText.Kernel.PdfException:'页面iText.Kernel.Pdf.PdfPage不能   添加到文档iText.Kernel.Pdf.PdfDocument,因为它属于   文件iText.Kernel.Pdf.PdfDocument。'

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

PDF页面对象通常包含许多相关对象。如果您只将页面本身添加到新文档而不是相关对象,则结果页面将不完整。

因此,iText 7检查AddPage是否已在目标文档中创建了相关页面,并且在后一种情况下抛出异常以防止丢失依赖对象。

要跨文档复制页面,PdfDocument方法CopyPagesTo有很多重载。对你而言,例如

PdfDocument template = new PdfDocument(reader);
using (var pdf = new PdfDocument(writer))
{
    // copy template pages 1..1 to pdf as target page 1 onwards
    template.CopyPagesTo(1, 1, pdf, 1); 
}

(注意,如果页面上有额外内容,您可能希望选择接受其他IPdfPageExtraCopier实例的方法的重载,例如对于AcroForm字段a PdfPageFormCopier。)