2016-02-12 134 views
0

我在Adobe Acrobat XI“Text2#0”和“Text2#1”中编辑的PDF中有两个字段。在Adobe Acrobat XI中使用JavaScript修改PDF字段值

我想使它所以当你输入文本第二个字段(文本2#1),它显示了在第一个字段(文本2#0),但一对星号之间封闭(这是条形码生成器)。

在“操作”选项卡上的“文本域属性”窗口的文本2#1,我设置的MouseUp触发运行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的回答如下。我所做的就是改变他提到的字段名称(条形码字段已更改为“条形码”,文本字段更改为“Text2”),然后我制作了“开启模糊”触发器(当用户停止与之交互时该字段)与Text2关联。这是触发器运行的JS:

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

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

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

回答

1

没有意外的是星号没有添加。

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

为了对字段的内容做些什么,您需要Field对象的value属性。

这就是说,你的行会必须是这样的:

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 + "*" ; 

这应该这样做。

相关问题