我正在开发一个项目,该项目应该读取包含由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格式的值?
答案 0 :(得分:0)
使用iText设置字段值时,如果af
是AcroFields
个实例,请尝试
af.setGenerateAppearances(true);
设置值之前。
PDF规范ISO 32000-1定义了 NeedAppearances 标志,参见表218 - 交互式表单字典中的条目。如果设置为 true ,则PDF查看器知道必须为表单字段创建外观流。
如果标志不是 true ,iText会解释该标志并仅在填写表单时创建外观流(如果 true ,则期望观看者重新创建此类外观反正)。
Ooo至少用于创建PDF表单,并将该标志设置为 true 。如果 true ,Adobe Reader会尊重旗帜并创建外观。可能你的PDF查看器不尊重标志,可能它总是希望文档中已经存在外观。
使用setGenerateAppearances(true)
可以强制生成外观流。如果上述假设是正确的,这应该可以解决您的问题。