我正在尝试从现有的.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。'
我该如何解决这个问题?
答案 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
。)