Adobe Acrobat - 使用 JavaScript 遍历 PDF 中的所有字段时出错

Adobe Acrobat - Error Iterating Over All Fields in a PDF with JavaScript

本文关键字:字段 出错 PDF Acrobat 使用 JavaScript 遍历 Adobe      更新时间:2023-09-26

我在迭代文档中的所有字段以删除工具提示时遇到问题。这是我的代码:

var index=0;
while(index<this.numFields)
{
    var nom=this.getNthFieldName(index);
    var fieldName=this.getField(nom);
    fieldName.userName = "";
    index=index+1;
}

我收到一条错误消息,指出fieldName is null,我的脚本无法运行。我已经看到了这个答案:

使用 JavaScript 遍历 PDF 表单中的所有字段

我也遇到了同样的错误。如果我使用 var fieldName=this.getField("field1"); 手动将字段名称分配给fieldName,它可以正常工作。

有谁知道为什么这会对我产生错误?

编辑:

我可以循环访问列表并将nom输出到控制台,以便我知道它正在正确获取字段的名称。它似乎很难将该名称放入this.getField(nom)语句中。不知道为什么...

为什么使用 while...为此?

执行完全相同的操作(将鼠标提示文本设置为空白字符串)使用

for (var i = 0 ; i < this.numFields ; i++) {
this.getField(this.getNthFieldName(i)).userName = "" ;
}

这应该可以做到。

但是,除非您有很好的理由,否则不建议将userName设置为空白字符串;如果您的表单与辅助设备一起使用,则需要它,它也是最近和最简单的帮助项。

我想出了我的问题。

创建表单

时,我使用自动字段检测为我创建字段以节省时间(此表单上有大约 250 个字段)。我首先需要脚本的原因是删除该功能生成的糟糕的工具提示名称。

显然,在其无限的智慧中,字段检测功能命名了少数具有前导空间的字段(类似于" OF INFORMATIONrow1")。由于getNthFieldName(index)按字母顺序返回字段,因此它返回了这些损坏的字段之一并立即出错,因为getField()不喜欢名称中的前导空格。

我重命名了少数几个字段,脚本就像一个魅力。