2011-04-27 112 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"]); 

可能有一个或两个潜伏在那里的地方,但这会让你在正确的轨道上。