作为JavaScript的爱好者,我总是很感兴趣地了解JavaScript在非浏览器平台上的工作方式。 您可能没有意识到这一点,但是Adobe Acrobat具有完整的JavaScript API,您可以使用它向PDF文件添加交互性。 因此,我认为应该从Web开发人员的角度研究Acrobat中提供的JavaScript支持。
PDF文件中的JavaScript用于与书签,注释,链接,按钮,自定义对话框,嵌入式媒体,表单,搜索等进行交互。 它可以在应用程序级别和批处理操作中使用,但也可以与PDF文件一起保存。 将其保存在PDF文件中后,兼容的查看器应用程序便可以运行JavaScript。
真的是JavaScript吗?
在Web开发中,我们对JavaScript的使用与浏览器的DOM API交织在一起,我们通常不将两者分开。 Acrobat 9是最近发布的Adobe Creative Suite 4的大多数版本的组件,它支持JavaScript 1.7,并带有您习惯于使用Date
和RegExp
所有顶级对象。 您可以使用闭包,并且函数可以作为对象传递。 可以通过名称或点符号来访问对象属性。 app.language
和app["language"]
都引用相同的属性。
Acrobat拥有自己的文档API和各种支持对象。 我发现的第一个奇怪之处是this
关键字始终引用一个Doc
对象,该对象是对当前PDF文档的引用。 类似于浏览器中的window
对象。 即使在button
对象的MouseUp
事件的上下文中, this
仍然是对当前文档的引用。 虽然, Function
对象的apply
方法仍然可以用来更改this
关键字所指的内容。
Acrobat JavaScript API
API使用将参数传递给JavaScript库中流行的函数的命名参数样式。 每个API函数都可以将键/值对的数组作为单个参数。 例如,我们调用app.alert
函数(与浏览器alert
功能大致相同),如下所示:
var result = app.alert({
cMsg: "Are you going to click it again?",
cTitle: "You've clicked the Big Red Button!",
nIcon: 2,
nType: 2
});
值cMsg
和cTitle
设置警报对话框消息和标题。 显示的图标和按钮由最后两个值指定。 指定的按钮还确定可能的返回值。 我们将nType
指定为2
,因此对话框将显示“是”和“否”按钮,如果单击“否”,则返回3
如果单击“是”,则返回4
。
事件处理是使用操作实现的。 例如,如果将上述对app.alert
调用app.alert
在名为getChoice
的函数中,则可以将其设置为单击按钮时被调用:
button.setAction("MouseUp", "getChoice()");
程序员功能
Acrobat有一个带有交互式控制台的JavaScript调试器,但是JavaScript编辑器有很多不足之处。 您会在其中输入文本的纯文本框。 没有语法突出显示,没有代码提示,没有代码完成-就像使用Windows记事本进行编辑一样,由于没有撤消操作,操作变得更糟。 幸好您可以使用外部编辑器。 它确实具有一个赎回功能,即语法检查器。 如果JavaScript包含语法错误,则将无法保存。 我希望更多的文本编辑器具有此功能。
进阶JavaScript
Acrobat中的JavaScript具有许多您无法在浏览器中找到的功能。 ADBC对象提供对数据库的直接访问,SOAP对象允许使用SOAP协议访问Web服务。 用于Acrobat的JavaScript具有读取和写入文件和数据流以及JavaScript XML处理扩展E4X的功能。 但是,这些功能大多数是供企业使用,而不是一般的Web使用,因为某些功能需要Acrobat Professional,而某些功能则需要在Adobe Reader中提高安全级别。
兼容性
兼容的查看应用程序包括Adobe Acrobat和Adobe Reader。 API的一些更高级的部分仅适用于Acrobat Professional。 兼容的创作应用程序包括Adobe Acrobat Professional和开源桌面发布应用程序Scribus 。 可以在其他PDF开发人员库中找到JavaScript支持,例如.NET的PDFDoc Scout和Java的JPedal和iText 。
获得帮助
没有这些基本文档,您将一无所获: Acrobat API参考JavaScript和使用JavaScript开发Acrobat应用程序 。 这些文档和其他资源都可以在JavaScript for Acrobat网页上找到。 不幸的是,您可能会在这里发现一些过时的信息。 您还可以在Acrobat 9 SDK联机帮助站点中找到相同的信息。
From: https://www.sitepoint.com/an-introduction-to-javascript-for-acrobat/