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 以便接收這個訊息。在某些內容 (其中包括文件、資料夾、網頁、欄位和批次層級) 中,您可以將 JavaScript 程式碼加入至 PDF 檔。在此僅會針對文件層級內容來討論,這個層級的內容會定義當開啟 PDF 文件時,所評估的預設指令碼。
PDF 檔可以將
messageHandler
屬性加入至
hostContainer
物件。
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()
方法。呼叫這個方法時,便會將訊息 (
"Hello from HTML"
) 傳送給 PDF 檔中的文件層級 JavaScript。
<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 內容進行跨指令碼處理
。