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

Copy page from pdf file to new document

我正在尝试从现有 .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: 'Page iText.Kernel.Pdf.PdfPage cannot be added to document iText.Kernel.Pdf.PdfDocument, because it belongs to document iText.Kernel.Pdf.PdfDocument.'

我该如何解决这个问题?

一个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 字段 PdfPageFormCopier。)