我有一个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
这种方法很慢(取决于模板文件的大小,但需要几秒钟而不是几毫秒)。是否可以在每个页面上使用相同的模板文件,而不必从临时文件写入或读取临时文件?我阅读了文档,猜测使用新的页面事件处理程序可能是可行的,但没有弄清楚。
暂无答案!
目前还没有任何答案,快来回答吧!