我已经使用一些textfields创建了一个pdf文档。我可以使用Adobe reader填充这些文本字段并使用该文件保存这些值。
我的问题是,我可以使用iText以编程方式执行此操作吗?如果有可能,请告诉我在哪里可以找到一些示例?
答案 0 :(得分:2)
iText 7 Jump-start tutorial中有解释,更具体地说,在chapter 4中解释:
此表格:
可以这样填写:
PdfDocument pdf =
new PdfDocument(new PdfReader(src), new PdfWriter(dest));
PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true);
Map<String, PdfFormField> fields = form.getFormFields();
fields.get("name").setValue("James Bond");
fields.get("language").setValue("English");
fields.get("experience1").setValue("Off");
fields.get("experience2").setValue("Yes");
fields.get("experience3").setValue("Yes");
fields.get("shift").setValue("Any");
fields.get("info").setValue("I was 38 years old when I became an MI6 agent.");
// form.flattenFields();
pdf.close();
结果如下:
如果您取消注释第form.flattenFields();
行,那么您就明白了:
当表单展平时,字段将被删除,并且只剩下内容。
如果PDF是动态XFA表单,那么您应该提供XML流,并且应该阅读FAQ:How to fill out a pdf file programmatically? (Dynamic XFA)
由于您似乎是iText的新手,因此假设您将使用最新版本的iText(即iText 7),而不是正在淘汰的版本(iText 5)或过时版本(所有版本)在iText之前2)。但是,如果您因任何原因选择使用iText 5,那么您的问题将与How to fill out a pdf file programatically?重复(在这种情况下,您的问题应该作为副本关闭)。