
高级技术文档撰写工程师
Adobe
PDF Control 范例应用程序可加载 PDF 文件。请使用 HTML (而非嵌入式 PDF 渲染器) 提供的用户界面在文件中导航。缩放和导航按钮位于应用程序的顶部 (见图 1)。
PDF Control 范例应用程序演示 Adobe AIR 的以下 PDF 内容处理功能:

图 1。通过本范例应用程序可以加载 PDF 文件。
注意: 本范例应用程序按原样提供, 用于教学目的。
若要充分利用本篇文章, 您需要以下软件和文件:
本范例应用程序包括以下文件:
应具备构建 HTML 应用程序的一般经验。有关使用此快速入门指南的详细信息, 请参阅用 HTML 构建快速入门范例应用程序。
对于源文件中的全部 HTML 和 JavaScript 代码, 本文将不一一介绍。此处仅介绍如何从 HTML 页中的 JavaScript 与 PDF 页中的 JavaScript 进行通信。
在 PDF 文件的文档级 JavaScript 中, 可以将函数赋给 hostContainer 对象的 msgHandler 属性的 onMessage、onError 和 onDisclose 属性。这些函数定义 PDF 文件如何处理从宿主容器向其发送的消息。
范例文件随附的 test.pdf 文件包含以下文档级 JavaScript:
function myOnMessage(aMessage)
{
if (aMessage.length==1) {
switch(aMessage[0])
{
case "ZoomIn":
zoom *= 2;
break;
case "ZoomOut":
zoom /= 2;
break;
case "PageUp":
pageNum--;
break;
case "PageDn":
pageNum++;
break;
default:
app.alert("Unknown message: " + aMessage[0]);
}
}
else
{
app.alert("Message from hostContainer: \n" + aMessage);
}
}
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;
this.hostContainer.messageHandler = msgHandlerObject;
这段代码定义用于处理传入消息的函数。这些函数被设置为 msgHandlerObject 对象的 onMessage、onError 和 onDisclose 属性。这段代码将 msgHandlerObject 对象赋给 hostContainer 对象的 msgHandler 属性。myOnDisclose() 函数检查传入消息数组中的第一个字符串, 并采取适当的措施。例如, 如果字符串是 "ZoomIn", 则这段代码设置一个 PDF JavaScript 属性 (zoom *= 2), 用于放大页面。
本范例应用程序显示基本的页面导航和缩放系数。Adobe Acrobat 开发人员中心*中提供有关用于 Adobe Acrobat 的其它 JavaScript 扩展的全部详细信息。
请按照以下步骤操作:
myOnMessage 作为“脚本名称”, 然后单击“添加”按钮。在“JavaScript 编辑器”窗口中将文本编辑为以下内容, 然后单击“确定”按钮。
function myOnMessage(aMessage)
{
if (aMessage.length==1) {
switch(aMessage[0])
{
case "ZoomIn":
zoom *= 2;
break;
case "ZoomOut":
zoom /= 2;
break;
case "PageUp":
pageNum--;
break;
case "PageDn":
pageNum++;
break;
default:
app.alert("Unknown message: " + aMessage[0]);
}
}
else
{
app.alert("Message from hostContainer: \n" + aMessage);
}
}
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;
this.hostContainer.messageHandler = msgHandlerObject;
注意: 有关此段代码的描述, 请参阅上一节“PDF 文件中用于处理消息的 JavaScript 函数”。
index.html 页使用 object 标签加载 PDF 内容:
<object id="PDFObj" data="test.pdf" type="application/pdf" width="100%" height="90%"/>
范例应用程序的 HTML 代码定义了四个 Button 组件:
<table>
<tr>
<td>
Zoom:
<input type="button" value="+" onclick="sendMessage('ZoomIn')"/>
<input type="button" value="-" onclick="sendMessage('ZoomOut')"/>
</td>
<td>
Navigate:
<input type="button" value="<" onclick="sendMessage('PageUp')"/>
<input type="button" value=">" onclick="sendMessage('PageDn')"/>
</td>
</tr>
</table>
用户单击任意一个 Button 组件时, click 事件处理函数都将调用 sendMessage() 方法。例如, 单击第一个按钮将执行以下代码:
sendMessage('ZoomIn')
sendMessage() 方法调用页面中所嵌 PDF 对象的 postMessage() 方法。postMessage() 方法采用消息字符串的数组作为参数:
function sendMessage(message)
{
try
{
document.getElementById("PDFObj").postMessage([message]);
}
catch (error)
{
alert( "Error: " + error.name + "\nError message: " + error.message);
}
}
PDF 文件中的文档级 JavaScript 定义了一个 hostContainer.messageHandler 对象。此对象确定如何处理传入的消息。 (有关详细信息, 请参阅上面的“PDF 文件中用于处理消息的 JavaScript 函数”一节。) 在本应用程序中可以对 PDF 内容进行导航或放大。