使用iText填充现有PDF文本域

6

我已经创建了一个包含一些文本字段的pdf文件。我可以使用Adobe Reader填写这些文本字段,并将这些值保存到该文件中。

我的问题是,我能否通过iText编程实现这一点?如果可能的话,请告诉我在哪里可以找到一些例子?


1
每当我看到这样的问题时,我都会想:官方网站难道就这么难找吗? 请回答这个问题:我们可以做些什么来改善网站?请用自己的话解释为什么在developers.itextpdf.com上没有找到任何示例。我们可以做些什么来改进那个网站?我们提供的书籍有什么问题吗? - Bruno Lowagie
1个回答

14

这个在iText 7快速入门教程中有解释,具体在第四章:

这个表单:

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流,并阅读常见问题解答:如何以编程方式填写pdf文件?(动态XFA) 由于您似乎是iText的新手,因此假定您将使用最新版本的iText(即iText 7),而不是正在逐步淘汰的版本(iText 5)或已过时的版本(iText 2之前的所有版本)。但是,如果由于某种原因您选择使用iText 5,则您的问题是如何以编程方式填写pdf文件?的副本(在这种情况下,应将您的问题视为重复并将其关闭)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接