java—如何在itext 7的每个页面上使用相同的表单模板

q35jwt9p  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(336)

我有一个pdf模板,其中包含图像和表单域。我阅读这个模板,填写每页的表单字段,然后写入一个临时pdf文件。然后我阅读这个文件并复制到一个主控文档中,使用同一个模板生成多个页面。大致如下:

Document masterDoc = ...

 -- loop per page --
PdfWriter pfdWriter = new PdfWriter(tmpFileName); 
PdfDocument pdf = new PdfDocument(new PdfReader(templateFile), pfdWriter); 
Document doc = new Document(pdf);

// Set form fields
PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true);
form.setDefaultJustification(0);
Map<String, PdfFormField> formFields = form.getFormFields();
formFields.get("key").setValue("value");
form.flattenFields();

doc.close();

try (PdfDocument resource = new PdfDocument(new PdfReader("pathToTmpFile"))) {
    resource.copyPagesTo(1, 1, masterDoc.getPdfDocument());
}
-- end of loop

这种方法很慢(取决于模板文件的大小,但需要几秒钟而不是几毫秒)。是否可以在每个页面上使用相同的模板文件,而不必从临时文件写入或读取临时文件?我阅读了文档,猜测使用新的页面事件处理程序可能是可行的,但没有弄清楚。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题