我有一个交互式 pdf 表单,其中包含总计字段,当用户填写其他字段时,这些字段会自动填充,并且手动效果很好。但是当我使用 iText 和 java 以编程方式填充它时,普通的填充得很好,但那些具有自动计算功能的填充不起作用并显示为零。
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 ();
最佳答案
PDF 中字段值的自动计算是通过 PDF 中的 Javascript 进行的。如果发生某些事件(例如字段值更改或字段焦点丢失),则会执行此 Javascript 并将字段值设置为新计算的值。
另一方面,iText 不运行任何 Javascript。在 iText 中,仅更改您明确更改的 PDF 部分,不需要副作用。
因此,要在使用 iText 编辑 PDF 后打开 PDF 时显示适当的重新计算字段,您还应该在打开 PDF 时触发字段的重新计算。
如果您提供 PDF 文件本身,我们会向您展示如何操作。
PS:可以通过添加打开文档时触发重新计算
stamper.addJavaScript("this.calculateNow();");
reader.removeUsageRights();
之前
stamper.close ();
不幸的是,这将禁用文档的阅读器启用功能。
关于pdf - 自动计算字段不适用于 iText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20195755/