pdf - 自动计算字段不适用于 iText

标签 pdf itext interactive

我有一个交互式 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/

相关文章:

android - 交互式 PDF 阅读器 : Android

c# - 从 PDF 文件创建图像或 PdfTemplate

python - 如何从 Python 代码进入 REPL(读取、评估、打印、循环)

haskell - 如何初始化一个 monad,然后在 Haskell 中多次使用一个函数

python - 以交互模式运行时,python 有哪些不同之处?

node.js - 从 Angular 2 中使用 html-pdf 创建的 Node/express 后端接收文件

javascript - 如何使用文件输入在 PDFJS 中打开本地 PDF?

java - 读取 pdf 中的现有边距

javascript - 使用 iText 在 pdf 的特定位置标记

c# - 如何使用 itextsharp 将 UTF-8 字符写入 pdf 文件?