【问题标题】:PDFtk and number formatted PDF form fieldPDFtk 和数字格式的 PDF 表单域
【发布时间】:2016-08-08 08:15:12
【问题描述】:

我正在使用pdftk 用生成的 fdf 填写表单。

在PDF表单中,表单域配置为带2个小数点的数字域,负值会用括号显示,例如-4444会变成( 4444.00)

使用任何 PDF 查看器并更改表单上的值确实使表单以上述行为正确显示值(负值将变为带括号的值)

也使用 FDF 进行测试(通过导入表单),负值也将正确显示。

但是当使用 pdftk 填充表单动作时,负值保持不变,显示不改变,仍然显示 -4444 而不是 (4444.00)

之前有没有人经历过/有解决方案?

更新 #1

我也测试了Apache PDFBox,它有同样的问题:( 现在我正在尝试通过使用 PDF 的 javascript 来实现这一点,有什么线索可以证明这种方式可行吗?

更新 #2

遇到了这个线程How to refresh Formatting on Non-Calculated field and refresh Calculated fields in Fillable PDF form,因此也尝试使用 iText。但是仍然无法使其工作

【问题讨论】:

    标签: pdf itext pdfbox pdftk


    【解决方案1】:

    最后,我找到了一些方法可以在 PDF 表单字段中进行格式化。

    方法#1

    要求

    1. pdftk
    2. 带有 javascript 的 PDF 表单

    在 PDF 中,创建一个“文档 Javascript”(see how) 并重新分配表单的值以使其变脏,如 Denis 在更新 #2 的线程中所述。脚本可以简单如下:

    var text1 = this.getField('text1');
    text1.value = text1.value;
    

    缺点

    Javascript 只会在您打开 PDF 时触发,如果您想使用一些 ownerPassword 设置 PDF 以防止用户编辑文件,则 javascript 将因为只读表单字段而失败。否则,假设您在 PDF 中有 100 个表单域,重新分配每个域都是一场噩梦。

    方法#2

    1. iText
    2. PDF 表格

    我个人会更喜欢这种方法。强大的 iText 已经有 API 来设置表单字段,同时格式化字段显示(see how)。生成的 PDF 也可以以正确的格式打印。

    缺点

    要么使用 iText API 找出表单字段的现有格式,要么您将在代码中对格式进行硬编码。比使用 pdftk 需要更多的努力。

    【讨论】:

      【解决方案2】:

      我使用的是 ChinKang #1 的更简单版本。

      在工具中 -> 文档 Javascripts:

      this.calculateNow();
      

      要检查的一件事是在“工具”->“设置字段计算顺序”中,任何计算都按适当顺序排列。

      然后我使用https://github.com/ccnmtl/fdfgen 和 pdftk 来填写表格。

      唯一的问题是您无法拼合 PDF

      【讨论】:

        猜你喜欢
        • 2014-04-05
        • 1970-01-01
        • 2022-12-15
        • 2020-10-17
        • 1970-01-01
        • 2021-01-13
        • 1970-01-01
        • 1970-01-01
        • 2018-12-04
        相关资源
        最近更新 更多