2016-02-12 234 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 + "*" ; 

這應該這樣做。

相關問題