为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不显示使用 PDFBox(2.0.11) 设置的表单字段?

为什么不显示使用 PDFBox(2.0.11) 设置的表单字段?

ibeautiful 2021-07-17 23:00:08
我正在使用 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


查看完整回答
反对 回复 2021-07-23
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

如果不明显:不要使用 Mac 的预览创建/编辑/保存模板 pdf 以与 PDFBox 一起使用。

我遇到了同样的问题,不得不在 Acrobat Pro 中重新创建 PDF。有了这个 PDF,上面的代码工作得很好。


查看完整回答
反对 回复 2021-07-23
  • 2 回答
  • 0 关注
  • 233 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信