google-chrome - 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 = "";
我将不胜感激任何帮助弄清楚如何修复我的表格。谢谢!
解决方案
简短回答:您不能使用 Acrobat 制作要在其他查看器中运行的表单原型。Acrobat 和 Reader 是您最好的情况,因为它对 JavaScript 的支持最多。所有其他...我再说一遍...所有其他...包括 Adobe 自己的移动阅读器在内的支持较少。
长答案:并非所有 PDF 查看器都以与 Acrobat 相同的方式使用 JavaScript,并且大多数都没有像 Acrobat 那样实现完整的对象、事件和属性集。例如,Chrome 不会执行某些字段中的格式脚本。我的猜测是 Chrome 将带有逗号的数字解释为字符串。
通过将字段设置为数字并将分隔符样式设置为使用逗号而不是小数点,Acrobat 会自动向字段添加一些 JavaScript 以强制其返回数字。
Chrome 没有执行该内置脚本,因此它误解了该字段的值。尝试在脚本中添加一些代码,首先将字段的值解析为数字,然后进行数学运算。它会更冗长,但 hen 将在 Acrobat 和 Chrome 中运行相同。
推荐阅读
- mysql - MySQL - UNION over SELECT 结果
- javascript - 将值存储在使用 ajax 创建的表单中
- reactjs - reactjs中的bootstrap和react-router有什么帮助吗
- swift - tvOS PressesBegan 调用太晚(焦点已经改变后)
- matlab - 如何在 MATLAB 中生成日期时间数组?
- android - 哪种是干净架构中模块之间通信的最佳方法
- sas - 我在 SAS 宏中使用 IF 语句时遇到困难
- android - RNFetchBlob 下载无法在 android 9 上运行
- python - 如何合并两个具有重复列的数据框以连接每个字符串值?
- node.js - 当使用带有代理的 Puppeteer 请求 HTTPS 站点时,如何/何时/在何处设置标头?