我正在使用 PDFBox 2.0.11 打开 PDF 表单并提取值。这按预期工作。当我尝试设置一个值时,它似乎有效。当我打开 PDF 时,不显示该值。如果我在该字段中单击,则该值将显示为设置,但当我单击该字段时再次消失。这似乎是一个常见问题,但我见过的修复程序似乎都不起作用。if(file.exists()) { PDDocument doc = PDDocument.load(file); doc.setAllSecurityToBeRemoved(true); PDDocumentCatalog catalog = doc.getDocumentCatalog(); PDAcroForm form = catalog.getAcroForm(); // Add Font PDResources resources = new PDResources(); resources.put(COSName.getPDFName("Helv"), PDType1Font.HELVETICA); form.setDefaultResources(resources); // End Add Font form.setNeedAppearances(false); List<PDField> fields = form.getFields(); for (Object field : fields) { if (field instanceof PDTextField) { PDTextField pdTextbox = (PDTextField) field; System.out.println("PDTextBox " + pdTextbox.getFullyQualifiedName() + " " + pdTextbox.getValue()); if(pdTextbox.getFullyQualifiedName().equalsIgnoreCase("a3_5")) { try { pdTextbox.getWidgets().get(0).setHidden(false); pdTextbox.setValue("5500"); } catch(Exception e){ e.printStackTrace(); } } } else { System.out.print(field); System.out.print(" = "); System.out.print(field.getClass()); System.out.println(); } } doc.save("..._MINE_UPDATE.pdf"); doc.close(); }
2 回答
长风秋雁
TA贡献1757条经验 获得超7个赞
出于某种原因,预览会剔除同样导致您无法在 PDF 中正确设置值的功能。
上面的代码可以正常工作,尽管我确实Add Font对以下部分进行了更改。
// Add Font
PDResources resources = form.getDefaultResources();
if(resources == null)
{
resources = new PDResources();
}
resources.put(COSName.getPDFName("Helvetica"), PDType1Font.HELVETICA);
if(form.getDefaultResources() == null)
{
form.setDefaultResources(resources);
}
// End Add Font
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
如果不明显:不要使用 Mac 的预览创建/编辑/保存模板 pdf 以与 PDFBox 一起使用。
我遇到了同样的问题,不得不在 Acrobat Pro 中重新创建 PDF。有了这个 PDF,上面的代码工作得很好。
添加回答
举报
0/150
提交
取消