我正在尝试在Acrobat中使用JavaScript以交互形式总计10个数据字段。最初,数据是手动输入的。我们创建的计算公式在手动输入数据时有效,但是当从另一个表单导出数据然后使用FDF文件导入到此表单时,计算公式不能正确计算。
当前工作流程使用三种形式。数据输入表1和表1中。 2.然后将数据从两种形式导出为数据并以FDF格式保存。
打开表单3,将两个数据文件导入此表单。有两个具有相似公式的TOTALS字段,一个将所有负数相加,另一个将所有正数相加。
但是,当我们导入两个文件时,只会触发第一个计算。第二个被忽略了。如果您再次导入任一数据文件,则第二次计算将触发。
因此,我们试图弄清楚如何在导入数据文件后告诉Acrobat进行BOTH计算。
以下是负数的JavaScript代码:
function calcLost(){
var amountLost = 0;
var pt_neck_diff = this.getField('pt_neck_diff').value;
var pt_arm_r_diff = this.getField('pt_arm_r_diff').value;
var pt_arm_l_diff = this.getField('pt_arm_l_diff').value;
var pt_chest_diff = this.getField('pt_chest_diff').value;
var pt_belly_diff = this.getField('pt_belly_diff').value;
var pt_waist_diff = this.getField('pt_waist_diff').value;
var pt_hips_diff = this.getField('pt_hips_diff').value;
var pt_butt_diff = this.getField('pt_butt_diff').value;
var pt_thigh_r_diff = this.getField('pt_thigh_r_diff').value;
var pt_thigh_l_diff = this.getField('pt_thigh_l_diff').value;
if(pt_neck_diff < 0){
amountLost += pt_neck_diff
}
if(pt_arm_r_diff < 0){
amountLost += pt_arm_r_diff
}
if(pt_arm_l_diff < 0){
amountLost += pt_arm_l_diff
}
if(pt_chest_diff < 0){
amountLost += pt_chest_diff
}
if(pt_belly_diff < 0){
amountLost += pt_belly_diff
}
if(pt_waist_diff < 0){
amountLost += pt_waist_diff
}
if(pt_hips_diff < 0){
amountLost += pt_hips_diff
}
if(pt_butt_diff < 0){
amountLost += pt_butt_diff
}
if(pt_thigh_r_diff < 0){
amountLost += pt_thigh_r_diff
}
if(pt_thigh_l_diff < 0){
amountLost += pt_thigh_l_diff
}
return amountLost;
}
event.value = calcLost();
另一个(几乎相同)脚本计算正数。任何人都知道如何告诉Acrobat运行第二个脚本?
如前所述,如果重新导入其中一个数据文件,两个公式都可以正常工作。首次导入文件时,它无法正常工作。
另一个有趣的事实是,以类似的形式,只使用四个数字的衍生计算可以正常工作。当我们使用包含10个数据字段的表单时,公式不起作用。
我们很难过。
答案 0 :(得分:0)
您可能需要仔细检查表单字段(http://help.adobe.com/en_US/acrobat/X/pro/using/WS58a04a822e3e50102bd615109794195ff-7de2.w.html)的计算顺序。
或者,调用this.calculateNow()将强制计算表单上的所有计算字段。请参阅Adobe的PDF API参考:http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/js_api_reference.pdf