HTML 页中的 JavaScript 可以通过调用表示 PDF 内容的 DOM 对象的
postMessage()
方法来向 PDF 内容中的 JavaScript 发送消息。例如,请看以下嵌入的 PDF 内容:
<object id="PDFObj" data="test.pdf" type="application/pdf" width="100%" height="100%"/>
包含 HTML 内容中的以下 JavaScript 代码向 PDF 文件中的 JavaScript 发送消息:
pdfObject = document.getElementById("PDFObj");
pdfObject.postMessage(["testMsg", "hello"]);
PDF 文件可以包含 JavaScript 以便接收此消息。在某些上下文(包括文档级、文件夹级、页级、字段级和批级上下文)中,可以向 PDF 文件添加 JavaScript 代码。此处仅讨论文档级上下文,这种上下文在打开 PDF 文档时会对计算出的脚本进行定义。
PDF 文件可以向
hostContainer
对象添加
messageHandler
属性。
messageHandler
属性是用于定义处理函数以便响应消息的一种对象。例如,以下代码定义了一个函数,用于处理 PDF 文件从主机容器(嵌入 PDF 文件的 HTML 内容)接收到的消息:
this.hostContainer.messageHandler = {onMessage: myOnMessage};
function myOnMessage(aMessage)
{
if(aMessage[0] == "testMsg")
{
app.alert("Test message: " + aMessage[1]);
}
else
{
app.alert("Error");
}
}
HTML 页中的 JavaScript 代码可以调用页面中包含的 PDF 对象的
postMessage()
方法。通过调用此方法,可向 PDF 文件中的文档级 JavaScript 发送消息 (
"Hello from HTML"
):
<html>
<head>
<title>PDF Test</title>
<script>
function init()
{
pdfObject = document.getElementById("PDFObj");
try {
pdfObject.postMessage(["alert", "Hello from HTML"]);
}
catch (e)
{
alert( "Error: \n name = " + e.name + "\n message = " + e.message );
}
}
</script>
</head>
<body onload='init()'>
<object
id="PDFObj"
data="test.pdf"
type="application/pdf"
width="100%" height="100%"/>
</body>
</html>
有关更高级示例,以及有关使用 Acrobat 8 向 PDF 文件添加 JavaScript 的信息,请参阅
在 Adobe AIR 中跨脚本访问 PDF 内容
。