0

我正在开发一个项目,该项目应读取包含由 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 表单字段上设置的值在 Adob​​e PDF Reader 上完美运行,但在 ICEPdf Viewer 上却不行。我在这里缺少什么?为什么 ICEPdf 无法显示 PDF 表单中的值?

4

1 回答 1

0

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

af.setGenerateAppearances(true);

在设置值之前。


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

iText 解释该标志,并且仅在该标志不为时在填写表单时创建外观流(如果为,则无论如何都希望查看者重新创建此类外观)。

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

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

于 2015-03-09T08:33:26.377 回答