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 내용 크로스 스크립팅
을 참조하십시오.