使用iText填充现有的pdf文本字段

时间:2017-11-08 12:07:13

标签: itext

我已经使用一些textfields创建了一个pdf文档。我可以使用Adobe reader填充这些文本字段并使用该文件保存这些值。

我的问题是,我可以使用iText以编程方式执行此操作吗?如果有可能,请告诉我在哪里可以找到一些示例?

1 个答案:

答案 0 :(得分:2)

iText 7 Jump-start tutorial中有解释,更具体地说,在chapter 4中解释:

此表格:

enter image description here

可以这样填写:

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();

结果如下:

enter image description here

如果您取消注释第form.flattenFields();行,那么您就明白了:

enter image description here

当表单展平时,字段将被删除,并且只剩下内容。

如果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?重复(在这种情况下,您的问题应该作为副本关闭)。