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 コンテンツのクロススクリプト
」を参照してください。