C# 将页面从pdf文件复制到新文档
我正在尝试从现有的.pdf文件复制一页,并将其粘贴到新文档中,如下所示:C# 将页面从pdf文件复制到新文档,c#,pdf,itext,itext7,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 titl
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'
如何修复此问题?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。您使用的是什么PDFWWriter?例如,您可以提供指向其文档的链接,或者提供其程序集或完整命名空间的名称吗?您的意思是,我可以更改从模板文档复制的新页面中的字段吗?更确切地说:只有使用PdfPageFormCopier复制页面,AcroField字段才会复制到目标文档。在这种情况下,我希望您能够在目标文档中更改它们的值,但我还没有尝试过。