将页面从 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
。)
我正在尝试从现有 .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
。)