首页 > 解决方案 > Chrome在线PDF计算失败

问题描述

我对 Chrome 66.0.3359.181 64 位和一个在线 PDF 文件(版本 1.6,Acrobat 7.x)有一个奇怪的情况。

所有字段均使用 Acrobat Reader DC 2018.011.20040 正确计算,但在 Chrome 中不正确。任何帮助都赞赏我如何修改文件以便正确计算它。

有问题的文件:http: //tietoala.fi/rauta/wp-content/uploads/2018/05/matkalasku_2018.pdf 这是芬兰语,如果有的话。在芬兰语中,小数点分隔符是逗号“,”而不是点“.”。这可能至少是部分原因。此表格适用于任何要求旅行补偿的人。

让我们以“Taksi”的 € 字段为例。如果我把“20”放在那里,那么该字段和总计算都会正确显示“20,00 €”。但是,如果我输入“20,50”,结果是“20,50 €”在该字段中正确,但总计算是“20050,00 €”,这显然是不正确的。

总计的计算设置为“值是以下字段的总和(+):”,然后选择相应的两个字段。它的格式为“数字”,有 2 个小数位,分隔符样式“1234,56”(如芬兰语)和货币符号“€”。该字段未锁定。该字段未经验证。没有动作。

此外,在填写“Kilometrikorvaus”时,将“2”插入km,将“2”插入á€,正确计算为4,00€。但是,如果使用“0,44”作为á€,则总数为“nan€”。这里的字段如上所述,但计算如下:

var f1 = this.getField("km1");
var f2 = this.getField("a5");
if ( f1.value*f2.value != 0 )
  event.value = f1.value * f2.value;
else
  event.value = "";

我将不胜感激任何帮助弄清楚如何修复我的表格。谢谢!

标签: google-chromepdf

解决方案


简短回答:您不能使用 Acrobat 制作要在其他查看器中运行的表单原型。Acrobat 和 Reader 是您最好的情况,因为它对 JavaScript 的支持最多。所有其他...我再说一遍...所有其他...包括 Adob​​e 自己的移动阅读器在内的支持较少。

长答案:并非所有 PDF 查看器都以与 Acrobat 相同的方式使用 JavaScript,并且大多数都没有像 Acrobat 那样实现完整的对象、事件和属性集。例如,Chrome 不会执行某些字段中的格式脚本。我的猜测是 Chrome 将带有逗号的数字解释为字符串。

通过将字段设置为数字并将分隔符样式设置为使用逗号而不是小数点,Acrobat 会自动向字段添加一些 JavaScript 以强制其返回数字。

在此处输入图像描述

Chrome 没有执行该内置脚本,因此它误解了该字段的值。尝试在脚本中添加一些代码,首先将字段的值解析为数字,然后进行数学运算。它会更冗长,但 hen 将在 Acrobat 和 Chrome 中运行相同。


推荐阅读