在 Adob​​e Acrobat XI 中使用 JavaScript 修改 PDF 字段值

Using JavaScript in Adobe Acrobat XI to modify a PDF field value

我在 Adob​​e Acrobat XI 中编辑的 PDF 中有两个字段,"Text2#0" 和 "Text2#1"。

我正在努力做到这一点,当您在第二个字段 (Text2#1) 中输入文本时,它会显示在第一个字段 (Text2#0) 中,但包含在一对星号之间(这是用于条形码生成器)。

在 'Actions' 选项卡上的 Text2#1 的 'Text Field Properties' window 中,我将 MouseUp 触发器设置为 运行 a JavaScript:

var barcodeField = this.getField("Text2#0");
var barcodeLength = barcodeField.length;


if( barcodeField.charAt(0) != "*" ){
  barcodeField = "*" + barcodeField;     
};

if( barcodeField.charAt(barcodeLength - 1) != "*" ){
  barcodeField = barcodeField + "*";
};  

但是,从未添加封装星号。我错过了什么?

感谢阅读!

编辑:

感谢 Max 在下面的回答。我所做的是按照他提到的那样更改字段的名称(条形码字段更改为 "barcode",文本字段更改为 "Text2"),然后我创建了一个 'On Blur' 触发器(当用户停止与与 Text2 关联的字段交互。这是触发运行的 JS:

getField("barcode").value = getField("Text2").valueAsString;

var barcodeField = this.getField("barcode");
var textField = this.getField("Text2");

barcodeField.value = "*" + textField.value + "*";

没有添加星号也就不足为奇了。

barcodeField变量是一个Field对象,Field对象不能添加字符串。

为了对字段的内容进行操作,您需要字段对象的值 属性。

也就是说,您的行必须如下所示:

barcodeField.value = "*" + barcodeField.value ;

然而,还有一个更根本的问题。

字段名称的#1#2后缀是该字段的小部件编号。在 Acrobat JavaScript 中,字段的键是它的名称。当您有多个名称相同的字段时,它们会通过小部件编号进行区分。

一些字段对象属性适用于字段(并且对所有小部件都相同),其他属性适用于小部件(并且因小部件而异)。例如,rect 适用于小部件。但是 value 适用于该字段,这意味着具有该名称的所有字段显示相同。

因此,如果您希望一个字段显示星号,一个字段不显示星号,则必须使用两个字段,字段名称不同。

示例可能如下所示:

var bcf = this.getField("barcodeField") ; // has plain value
var bcfa = this.getField("barcodeFieldA") ; // has value with asterisks

bcfa.value = "*" + bcf.value + "*" ;

如果将此代码添加到 bcfa 字段的计算事件中,则必须将最后一行更改为

event.value = "*" + bcf.value + "*" ;

这样就可以了。