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

时间:2016-02-29 22:41:26

标签: javascript pdf null adobe acrobat

我无法迭代文档中的所有字段以删除工具提示。这是我的代码:

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,我的脚本无法运行。我已经看到了这个答案:

Iterating over all fields in a PDF form with JavaScript

我也遇到了与该代码相同的错误。如果我使用fieldName手动为var fieldName=this.getField("field1");分配字段名称,则可以正常使用。

有没有人知道为什么这会对我造成错误?

修改

我可以遍历列表并输出nom到控制台,所以我知道它正确地抓取了字段的名称。似乎无法将该名称放入this.getField(nom)语句中。不知道为什么......

2 个答案:

答案 0 :(得分:1)

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

使用

执行完全相同的操作(将鼠标提示文本设置为空白字符串)更简单
for (var i = 0 ; i < this.numFields ; i++) {
this.getField(this.getNthFieldName(i)).userName = "" ;
}

那应该这样做。

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

答案 1 :(得分:1)

我想出了我的问题。

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

显然,在其无限的智慧中,场检测功能命名为少数具有前导空间的字段(类似于&#34; OF INFORMATIONrow1&#34;)。由于getNthFieldName(index)按字母顺序返回字段,因此返回其中一个已损坏字段并立即生成错误,因为getField()不喜欢名称中的前导空格。

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