2011-04-27 115 views

回答

0

網頁中的JavaScript將不能夠與PDF表單域進行交互。但是,您可以將PDF表單發佈到網頁表單處理器,然後獲取表單字段中的值。

2

如果爲此設置了BOTH,則PDF中的JavaScript可以在網頁中調用JS,反之亦然。你可以看到Acrobat的documentation here

退房的HostContainer規範,從486頁上的PDF你需要的腳本是這樣的:

var document = this; // hurray for closures. 
this.hostContainer.messageHandler = { onDisclose: function() {return true;}, 
    onMessage: function(msgArrayIgnored) { 
    // build a JSON string of field/value pairs 
    var outgoingMessage = "{ "; 
    for (var i = 0; i < this.numFields; ++i) { 
     var fldName = document.getNthFieldName(i); 
     var fld = document.getField(fld); 
     var val = fld.value; 
     // you'll probably need to escape 'val' to be legal JSON 
     outgoingMessage += fldName + ": \"" + val + "\"; 

     // stick in a comma unless this is the last field 
     if (i != this.numFields-1) { 
     outgoingMessage += ", "; 
     } 

    } 
    outgoingMessage += "};"; 
    this.hostContainer.postMessage([outgoingMessage]); 
    }; 

在HTML,你需要建立類似的東西。讓我們假設你的pdf被嵌入到對象標籤中,並且該元素的ID是「pdfElem」。你的HTML代碼可能看起來是這樣的:

var pdf = document.getElementById("pdfElem"); 
pdf.messageHandler = function(message) { 
    var fldValPairs = eval(message); 
    doStuffWithFieldInfo(fldValPairs); 
}; 

以後,你要檢查你發佈的消息PDF的字段信息的任何時間,PDF將回調至pdf.messageHandler與包裹在一個陣列的JSON字符串:

pdf.postMessage(["this string is ignored"]); 

可能有一個或兩個潛伏在那裏的地方,但這會讓你在正確的軌道上。