自动计算字段不适用于iText

时间:2013-11-25 14:37:12

标签: pdf itext interactive

我有一个交互式pdf表单,其中包含总计字段,这些字段在用户填写其他字段时自动完成,并且可以手动完成。但是当我使用iText以编程方式填充它时,正常的填充非常好,但那些自动计算不起作用并且显示为零。

static String book = "myForm.pdf";
static String bookstamp = "myFormTest.pdf";
PdfReader reader = new PdfReader (book); 
PdfStamper stamper = new PdfStamper (reader, new FileOutputStream (String.format (bookstamp))); 
stamper.getAcroFields ();
stamper.setField ("ca50", "15000");
stamper.getAcroFields () ;
stamper.setField ("ca30", "150");
stamper.close ();

1 个答案:

答案 0 :(得分:2)

PDF中字段值的自动计算通过PDF中的Javascript进行。如果某些事件(例如,字段的值已更改或字段的焦点丢失),则会执行此Javascript并将字段值设置为新计算的字段。

另一方面,iText不运行任何Javascript。在iText中,仅更改了您明确更改的PDF部分,不需要副作用。

因此,要在使用iText编辑后打开PDF时显示相应的重新计算字段,您还应该在打开PDF时触发重新计算字段。

如果您自己提供PDF文件,则可以显示如何执行此操作。

PS:您可以在添加

打开文档时触发重新计算
stamper.addJavaScript("this.calculateNow();");
reader.removeUsageRights();

stamper.close ();

不幸的是,这将禁用文档的Reader-Enabling。