繁体   English   中英

如何只计算PDF表单中选中的复选框?

[英]How can I count only checked checkboxes in a PDF form?

我在Acrobat中打开的Adobe PDF中有一些复选框。 我要计算已选中的复选框,并在另一个文本框中输出数字。 如何使用JavaScript做到这一点? 还是其他方法?

多亏了George Johnson早在2008年的脚本,我才能够用一个非常简单的脚本实现这一目标。

我所做的是创建一个文本字段,将其设置为只读,并将其设置为自定义计算值,并将其放入脚本字段中:

// Initialize counter variable
var sum = 0; 
// Loop through the fields
for (var i = 1; i < 180; i += 1) {
// Add one if check box is not Off
    if (getField("CheckBox" + i).value !== "Off") {sum += 1;}
} 
// Set this field's value to the sum
event.value = sum;

重要说明: for循环中包含"CheckBox" + ii < 180 ,因为我的所有复选框都通过“ Checkbox180”命名为“ CheckBox1”,“ CheckBox2”等。

如果所有复选框均具有唯一的名称,则需要将这些名称放入数组中并在代码中循环遍历。 如果您只有15个复选框,则将脚本中的180更改为15。

一种可能是设置一个计数器,枚举所有字段,检查该字段是否为复选框,然后其值是否不为“ Off”; 在这种情况下,增加计数器。 这样做的函数如下所示:

function countCheckedBoxes() {
    var cntr = 0;
    for (var i = 0; i < this.numFields; i++) {
        var mf = this.getField(this.getNthFieldName(i));
        if (mf.type == "checkbox") {
            if (mf.value != "Off") {
                cntr++;
            }
        }
    }
if (cntr > 0) {
    app.alert("The form has " + cntr + " checked boxes")
} else {
    app.alert("The form has no checked boxes") 
    }
}

那应该做到的。

由于应该将复选框的数量移到另一个字段中,因此您可以使用以下代码替换cntr的评估:

if (cntr > 0) {
    this.getField("boxCount").value = cntr + " boxes checked";
} else {
    this.getField("boxCount").value = "no boxes checked";
}

...或只需输入cntr的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM