acroform字段值在icepdf中不起作用



我正在做一个项目,该项目应该读取包含Java代码填充的值的pdf文件/表单。

form.setField("permitnumber", p.getApplicationorno());
            form.setField("amountpaid", p.getAmount_app());
            form.setField("estimatedfeet", "56");
            form.setField("receiptnumber", "123415");
            form.setField("validity", "5");

现在我的问题是,在pdf表单的字段上设置的值在Adobe pdf Reader上运行良好,但在ICEPdf Viewer上则不然。我在这里缺少什么?为什么ICEPdf无法显示PDF表单中的值?

使用iText设置字段值时,如果af是您的AcroFields实例,请尝试执行

af.setGenerateAppearances(true);

在设置值之前。


PDF规范ISO 32000-1定义了NeedAppearances标志。参见表218–交互式表单词典中的条目。如果设置为true,则PDF查看器知道必须为表单字段创建外观流。

iText解释该标志,并且仅在标志不是true的情况下在填写表单时创建外观流(如果true,则查看器无论如何都应该重新创建此类外观)。

Ooo至少用于创建将该标志设置为true的PDF表单。如果true,Adobe Reader会尊重标志并创建外观。可能您的PDF查看器不尊重该标志,可能它总是期望外观已经存在于文档中。

使用setGenerateAppearances(true)可以强制生成外观流。如果上面的假设是正确的,这应该可以解决你的问题。

最新更新