Javascript iFrame中的postMessage到PDF
这是我的情况 我有一个嵌入PDF格式的网页。我们使用基本对象标记(嵌入到FF中)加载PDF文件,如下所示:Javascript iFrame中的postMessage到PDF,javascript,pdf,acrobat,Javascript,Pdf,Acrobat,这是我的情况 我有一个嵌入PDF格式的网页。我们使用基本对象标记(嵌入到FF中)加载PDF文件,如下所示: <object id="pdfForm" height="100%" width="100%" type="application/pdf" data="..url"></object> function save() { sendMessage(["submitForm"]); } function sendMessage(aMessage) {
<object id="pdfForm" height="100%" width="100%" type="application/pdf" data="..url"></object>
function save() {
sendMessage(["submitForm"]);
}
function sendMessage(aMessage) {
pdfObject = document.getElementById("pdfForm");
if (typeof(pdfObject) == "undefined")
return;
if (typeof (pdfObject.postMessage) == "undefined")
return;
pdfObject.postMessage(aMessage);
}
这一切都很顺利
但是我们在Firefox中遇到了一个问题,因此我们需要使用iFrame而不是object标记嵌入PDF。现在,使用以下代码嵌入PDF:
<iframe id="pdfWrapper" src="..someUrl" width="100%" height="800px" frameborder="0"></iframe>
有什么帮助吗?很抱歉问了这么长的问题
编辑:我被要求在代码中提供示例,以便人们可以测试消息是否有效。本质上,您只需要嵌入此javascript的任何PDF
function myOnMessage(aMessage) {
app.alert("Hello World!");
}
function myOnDisclose(cURL, cDocumentURL) {
return true;
}
function myOnError(error, aMessage) {
app.alert(error);
}
var msgHandlerObject = new Object();
msgHandlerObject.onMessage = myOnMessage;
msgHandlerObject.onError = myOnError;
msgHandlerObject.onDisclose = myOnDisclose;
msgHandlerObject.myDoc = this;
this.hostContainer.messageHandler = msgHandlerObject;
我意识到您需要Acrobat pro使用javascript创建PDF,因此为了简化这一过程,我在以下url上发布了示例代码(工作和非工作场景):
如果使用Windows,可以下载zip文件并将其解压缩到/inetpub/wwwroot,然后将浏览器指向works.htm或fails.htm
感谢您提供的帮助。对于Internet Explorer,请使用:
<object id="pdfForm" type="application/pdf" data="yourPDF.pdf"></object>
对于Firefox,请使用:
<embed id="pdfForm" type="application/pdf" src="yourPDF.pdf"></embed>
您还可以使用此命令访问嵌入对象
var emb = document.getElementsByTagName("EMBED")[0];
但您将从包含页面运行该代码,因此获取对iframe的引用,而不是仅在文档中调用它。我们可以用一个代码示例来测试我们的响应吗?Gausie,我为pdf提供了一些javascript。让我知道这是否足够,或者如果你需要我在某处发布PDF,我也可以这样做。我可以在stackoverflow中发布一个附件吗?Gausie,我提供了可下载的示例代码和pdf格式,这很有帮助。见上文。谢谢,谢谢。这很有效。不确定为什么firefox不完全支持对象。
var emb = document.getElementsByTagName("EMBED")[0];