我有一个pdf模板,我尝试在新文档中覆盖它。我需要从模板 PDF 中获取一些字段并在新的 PDF 中重写它们的值。我这样做:
PdfReader templatereader = new PdfReader("Templates//PDF_Template_Empty.pdf");
PdfDocument template = new PdfDocument(templatereader);
var writer = new PdfWriter(OutputFilepath);
PdfDocument newreport = new PdfDocument(writer);
var fields = PdfAcroForm.GetAcroForm(template, true); //!!!
但后来我抓住了异常:
iText.Kernel.PdfException: '没有相关的 PdfWriter 来制作 间接的。
我做错了什么以及如何解决它? iTextsharp 7.
该错误准确解释了出错的原因:您没有为名为 template
的PdfDocument
实例定义PdfWriter
实例。您为 newreport
创建了一个 PdfWriter
实例,但从不使用 newreport
。
这是应该这样做的:
PdfReader templatereader = new PdfReader("Templates//PDF_Template_Empty.pdf");
var writer = new PdfWriter(OutputFilepath);
PdfDocument template = new PdfDocument(templatereader, writer);
var fields = PdfAcroForm.GetAcroForm(template, true);
如您所见,不需要newreport
实例。template
实例将templatereader
作为输入,并将使用 writer
创建新的 PDF 作为输出。