PDDocument pdfDoc = PDDocument.load("C:\\Users\\igor\\Desktop\\test.pdf");
PDDocumentCatalog docCatalog = pdfDoc.getDocumentCatalog();
PDAcroForm acroForm = docCatalog.getAcroForm();
PDField field = acroForm.getField("applicationPrepaid[0].#pageSet[0].Pagina1[0].txtFirstName[0]");
if (field != null) {
field.setValue("Milan");
} else {
System.err.println("No field found with name:" + "applicationPrepaid[0].#pageSet[0].Pagina1[0].txtFirstName[0]");
}
pdfDoc.save("C:\\Users\\igor\\Desktop\\testout.pdf");
pdfDoc.close();
applicationPrepaid[0].#pageSet[0].Pagina1[0].txtFirstName[0]
当我使用这个长字段名时,我没有得到任何错误,但是得到的PDF不包含我放在字段中的值。我想可能字段名有问题,所以我使用了Pdftk工具,它只给出了txtfirstname
作为字段名。但是当我仅仅使用它时,我会得到no found字段,其名称为:txtfirstname
error。救命?
我现在意识到这个问题已经很老了,但我偶然发现了它,我想我应该公布我的解决方案。
您可以使用pdfbox找到PDF表单中字段的ID。它有一个非常丰富的API,不幸的是,它需要大量的阅读来弄清楚你必须做什么。
要获取表单字段的名称,您需要使用GetFullyQualifiedName
,它是PDField
类的一部分。
不幸的是,您无法从PDAcroForm
类一次性获得所有文件名(这一点我可以看出),因此您可以简单地创建表单名的数组,然后循环遍历每个表单名。
例如。
// Load the pdfTemplate
pdfTemplate = PDDocument.load(file);
PDDocumentCatalog docCatalog = pdfTemplate.getDocumentCatalog();
PDAcroForm acroForm = docCatalog.getAcroForm();
// Get field names
List<PDField> fieldList = acroForm.getFields();
// String the object array
String[] fieldArray = new String[fieldList.size()];
int i = 0;
for (PDField sField : fieldList) {
fieldArray[i] = sField.getFullyQualifiedName();
i++;
}
// Loop through each field in the array and do something
for (String f : fieldArray) {
PDField field = acroForm.getField(f);
System.out.println("f is: " + f);
if (f.contains("EXAMPLE FORM FIELD NAME")) {
DO SOMETHING
String value = "example value";
field.setValue(value);
System.out.println("printed: " + value + " to: " + f);
}
}
// Save edited file
pdfTemplate.save(sPdfTemplate);
pdfTemplate.close();
希望这对某人有帮助。
您是否设法在横向模式下填充PDF文档? 谢谢你的帮助。
我使用PDFBox填充PDF表单中的字段,方法是获取PDTextbox,然后调用'set value'。我还使用Wordutils.wrap(Apache Commons)手动包装文本,我发现某些字符组合,特别是括号,会导致PDF文本字段中输出奇怪的字符。例如: Pt.说:“我转身时膝盖扭动了一下,我跌倒了,我感觉有什么东西在(膝盖)动。当我试图站起来时,我崩溃了,因为它太疼了。” 在文本字段中显
我有一个基于XFA的pdf表单,我们需要使用java来填充它。你能建议最好的方法吗。我能够使用iText为pdf生成xfa xml。 我有从上面的代码生成的Pdf和Xfa XML。你能不能建议我如何继续下去,因为我似乎没有主意了。我试图检查XFA文档,但似乎不对。我没有xml,pdf非常复杂,因为它有许多字段,是一个动态XFA pdf表单。 您的帮助和建议将受到衷心的感谢。
我在PDF文档中(以编程方式)填写一个表单(AcroPdf),然后在文档上签名。我从doc.pdf开始,使用pdfbox的setfields.java示例创建doc_filler.pdf。然后我对doc_fill.pdf进行签名,创建doc?filled_signer.pdf,使用一些代码,基于签名示例并在Acrobat Reader中打开pdf。输入的字段数据是可见的,并且签名面板告诉我 “此签
我使用的是fpdf的“表格填写”脚本。org来填充我创建的PDF表单上的一些字段。这似乎工作正常。 我希望生成的PDF表单被展平,以便用户无法编辑表单字段。为此我使用PDFTK。但是,当我尝试展平PDF时,我得到一个表单字段为空的PDF。 关于如何使PDF扁平化(使用PHP)的任何建议都将不胜感激。谢谢! 这是我的代码: 下载原始Test.pdf文件:Test.pdf 下载Filled1。pdf文
问题内容: 我在PDF文档中(以编程方式)填写了表格(AcroPdf),然后在文档上签名。我从doc.pdf开始,使用PDFBox的setFields.java示例创建doc_filled.pdf。然后,我根据签名示例使用一些代码对doc_filled.pdf进行签名,以创建doc?filled_signed.pdf,然后在Acrobat Reader中打开pdf。输入的字段数据可见,签名面板告诉