Adobe Acrobat - 使用 JavaScript 迭代 PDF 中的所有字段时出错
Adobe Acrobat - Error Iterating Over All Fields in a PDF with JavaScript
我在遍历文档中的所有字段以删除工具提示时遇到问题。这是我的代码:
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
我也遇到了同样的错误代码。如果我使用 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 个字段)。我首先需要脚本的原因是删除该功能生成的糟糕的工具提示名称。
显然,字段检测功能以其无限的智慧命名了一些字段,前导 space(类似于“OF INFORMATIONrow1”)。由于 getNthFieldName(index)
returns 字段按字母顺序排列,它返回这些损坏的字段之一并立即出错,因为 getField()
不喜欢名称中的前导 space。
我重命名了几个字段,脚本运行得非常棒。
我在遍历文档中的所有字段以删除工具提示时遇到问题。这是我的代码:
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
我也遇到了同样的错误代码。如果我使用 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 个字段)。我首先需要脚本的原因是删除该功能生成的糟糕的工具提示名称。
显然,字段检测功能以其无限的智慧命名了一些字段,前导 space(类似于“OF INFORMATIONrow1”)。由于 getNthFieldName(index)
returns 字段按字母顺序排列,它返回这些损坏的字段之一并立即出错,因为 getField()
不喜欢名称中的前导 space。
我重命名了几个字段,脚本运行得非常棒。