2015-02-23 89 views
0

我正在一个项目,应该阅读一个PDF文件/窗体,其中包含由Java代码填充的值。acroform字段值不工作icepdf

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阅读器,但不是在ICEPdf浏览器完美。我在这里错过了什么?为什么PDF格式的值不能由ICEPdf显示?

+1

您使用哪个PDF库来填充值?你可以分享一个样本PDF吗? – mkl 2015-02-24 05:10:58

+0

我正在使用iText来填写PDF中的值... – 2015-03-05 23:25:58

+0

根据源文档和您的代码,iText确实或不会创建表单字段外观。你的里程是多少? – mkl 2015-03-05 23:38:31

回答

0

在设置利用iText的字段值,如果af是你AcroFields例如,尝试设置值之前做

af.setGenerateAppearances(true); 


的PDF说明书ISO 32000-1限定NeedAppearances标志,比照表格218 - 交互式表单词典中的条目。如果它设置为true,PDF阅读器知道它必须为表单域创建外观流。

iText的解释该标志并且仅创建外观流,同时填写表格,如果标志不为(如果真,观看者预计重新创建反正这样外观)。

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

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