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

PDFtk和数字格式的PDF表单字段,pdf,itext,pdfbox,pdftk,Pdf,Itext,Pdfbox,Pdftk,我正在使用生成的fdf填写表单 在PDF表单中,表单字段配置为带2个小数点的数字字段,负值将用括号显示,例如,-4444将变为(4444.00) 使用任何PDF查看器并更改表单上的值确实会使表单按照上述行为正确显示值(负值将变为带括号的值) 同样使用FDF进行测试(通过导入表单),负值也将正确显示 但是当使用pdftk fill form操作时,负值保持原样,而不改变显示,它仍然显示-4444,而不是(4444.00) 以前有没有人经历过这种情况/对此有解决方案 更新#1 我也测试过,它也有同样

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

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

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

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

但是当使用pdftk fill form操作时,负值保持原样,而不改变显示,它仍然显示-4444,而不是(4444.00)

以前有没有人经历过这种情况/对此有解决方案

更新#1 我也测试过,它也有同样的问题:( 现在我正试图通过使用PDF的javascript来实现这一点,有没有任何线索表明这种方法是可行的

更新#2
遇到此线程,因此也尝试使用iText。但是仍然无法使其正常工作

最后,我找到了一些在PDF表单字段中设置格式的方法

方法#1 要求
  • pdftk
  • 带javascript的PDF表单
  • 在PDF中,创建一个“Document Javascript”,并重新分配表单的值,使其变脏,如Denis在更新#2的线程中所述。脚本可以简单如下:

    var text1 = this.getField('text1');
    text1.value = text1.value;
    
    缺点 Javascript只有在打开PDF时才会被触发,如果您想使用某些ownerPassword设置PDF以阻止用户编辑文件,Javascript将因为只读表单字段而失败。否则,假设PDF中有100个表单字段,重新分配每个表单字段是一场噩梦

    进近#2
  • 文字
  • PDF格式
  • 我个人更喜欢这种方法。功能强大的iText已经有API来设置表单字段,同时格式化字段显示。生成的PDF也可以使用正确的格式打印

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

    最后,我找到了一些在PDF表单字段中设置格式的方法

    方法#1 要求
  • pdftk
  • 带javascript的PDF表单
  • 在PDF中,创建一个“Document Javascript”,并重新分配表单的值,使其变脏,如Denis在更新#2的线程中所述。脚本可以简单如下:

    var text1 = this.getField('text1');
    text1.value = text1.value;
    
    缺点 Javascript只有在打开PDF时才会被触发,如果您想使用某些ownerPassword设置PDF以阻止用户编辑文件,Javascript将因为只读表单字段而失败。否则,假设PDF中有100个表单字段,重新分配每个表单字段是一场噩梦

    进近#2
  • 文字
  • PDF格式
  • 我个人更喜欢这种方法。功能强大的iText已经有API来设置表单字段,同时格式化字段显示。生成的PDF也可以使用正确的格式打印

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

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

    在工具->文档Javascripts中:

    this.calculateNow();
    
    要检查的一件事是,在工具->设置字段计算顺序中,所有计算的顺序是否正确

    然后我使用和pdftk来填写表格


    唯一的问题是你不能将PDF展平,我使用的是一个更简单的ChinKang's#1版本

    在工具->文档Javascripts中:

    this.calculateNow();
    
    要检查的一件事是,在工具->设置字段计算顺序中,所有计算的顺序是否正确

    然后我使用和pdftk来填写表格

    唯一的问题是你不能把PDF展平