PDFtk和数字格式的PDF表单字段

时间:2016-04-16 10:00:24

标签: pdf itext pdfbox pdftk

我正在使用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。但仍无法使其正常工作

2 个答案:

答案 0 :(得分:0)

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

方法#1

要求

  1. PDFTK
  2. 使用javascript的PDF表单
  3. 在PDF中,创建一个" Document Javascript" (see how)并重新分配表单的值,使其变为脏,如Denis在Update#2的主题中所提到的那样。脚本可以简单如下:

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

    下行

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

    方法#2

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

      下行

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

答案 1 :(得分:0)

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

在工具中 - >文件Javascripts:

this.calculateNow();

要检查的一件事是工具 - >设置字段计算顺序,以便正确排序任何计算。

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

唯一的问题是你不能压扁PDF