我在一个项目上工作,它应该读取一个pdf文件/表单,其中包含由Java代码填充的值。
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阅读器上就不行了。我在这里错过了什么?为什么ICEPdf不能显示PDF表单中的值?
发布于 2015-03-09 16:33:26
在使用iText设置字段值时,如果af是您的AcroFields实例,请尝试执行以下操作
af.setGenerateAppearances(true);在设置值之前。
PDF规范ISO 32000-1定义了NeedAppearances标志,参见。表218 -交互式表单字典中的条目。如果设置为true,则PDF查看器知道它必须为表单域创建外观流。
iText解释该标志,如果该标志不是true(如果为true,则查看器无论如何都需要重新创建此类外观),则只会在填写表单时创建外观流。
Ooo至少用于创建将该标志设置为真的PDF表单。Adobe Reader会尊重该标志,如果为true,则会创建外观。可能您的PDF查看器不尊重该标志,可能它总是期望外观已经存在于文档中。
使用setGenerateAppearances(true),您可以强制生成外观流。如果上面的假设是正确的,这应该可以解决您的问题。
https://stackoverflow.com/questions/28685133
复制相似问题