CR的代码文本

all for learning about the world
  订阅 订阅  :: 管理

使用JavaScript开发Acrobat应用程序01

Posted on 2010-06-30 01:03  mumuliang  阅读(7352)  评论(0编辑  收藏  举报

参考:Developing Acrobat Application Using JavaScript


本章介绍Acrobat脚本模型中的JavaScript和它的对象体系,以及与JavaScript简单结合的Acrobat PDF
  

概述
Acrobat中的JavaScript是对JavaScript核心(ISO-16262标准的1.5版本)的一个扩展,正式名称叫做ECMAScript,由Netscape公司开发的一种面向对象的脚本语言。JavaScript被创造出来是为了从服务器向客户端加载基于Web的应用程序。Acrobat向核心JavaScript增加了新的对象、方法和属性,扩展了原先的JavaScript语言。这些Acrobat特有的对象允许开发者管理文档安全、与数据库交互、处理文件附件、与PDF文件交互、制作表单等等。因为Acrobat特有的对象是附加在JavaScript核心上的,因此你仍然可以访问它的标准库,包括Math、String、Date、RegExp。

PDF文档既可以在Acrobat软件中显示也可以在网页浏览器中显示。但它在两种环境中使用的JavaScript是有区别的。

l PDF文件中的JavaScript不能访问HTML页面中的对象。反之,亦然。

l 在HTML中,JavaScript可以控制Window窗体这样的对象,但Acrobat特有的JavaScript不能访问它们,但它能操作PDF特有的对象。

大多数人知道Acrobat是因为它是一个格式转换工具,或者用它能容易可靠地浏览电子文档,而不用关心电子文档是用什么环境制作的。然而,Acrobat能提供的远不止是一个文档浏览工具这么简单。

你能使用增强的PDF文档建立电子表格,用它来获得用户输入的数据。这类型的PDF文档完全可以取代现有的纸质表格,它允许在同一家公司内的员工以PDF文件的形式填写和提交表格,并且得益于PDF基于XML结构并支持SOAP服务,员工可以方便地与工作流程内的其他人员分享解决方案。

Acrobat也支持联机共享阅读。用来联机阅读的文档必须已经是PDF格式。当一个阅读者在Acrobat中阅读文档和添加注释时,这些注释作为一个新的层附加在原本的PDF文档上。Acrobat提供了多种多样的注释类型,例如笔记、图像、声音,甚至视频。也可以将注释层单独导出为一个独立文件与其他人分享。

在上面两种情况,以及其他没提到的情况下,你都可以自定义PDF文档的行为,执行安全策略,与数据库和web服务交互,或使用JavaScript动态的改变PDF文档外观。你可以把JavaScript绑定在PDF文档上,或者绑定在文档的某一页,或者某个表格某个按钮。当最终用户打开了这种包含JavaScript的PDF文档时,Acrobat决定管理它们并在合适的时候运行这些JavaScript代码。

你不仅仅可以在Acrobat中定制PDF文档的行为,你甚至可以定制Acrobat。在早期版本的Acrobat(5以及更早),这种定制化开发只能通过使用像C或C++这样的高级语言来编写Acrobat插件来完成。现在,大多数功能都可以通过Acrobat扩展的JavaScript来实现。使用JavaScript向Acrobat最终用户界面添加一个菜单比写一个插件来完成同样的功能要容易得多。

使用Acrobat Professional,你可以创建批处理来处理多个文档,处理单个文档,处理某个页面或者处理某个表单区域。批处理程序可以在一系列PDF文件上运行JavaScript,可以完成从注释库导出全部注释,标出拼写错误,自动打印多个PDF文档这样的任务。

阅读 Acrobat JavaScript API参考
本文(Developing Acrobat Application Using JavaScript)的相关文档是JavaScript for Acrobat API Reference(尚未翻译)。如果你真的对PDF文档的JavaScript解决方案感兴趣,这个文档对你来说更重要。这样的话,了解如何阅读API参考,了解方法上的安全规则,了解使用这些受安全约束的方法的标准方法,这些都是极其重要的。
这些功能具有特别的意义:
 快捷栏:在JavaScript for Acrobat API Reference中,每个对象、属性和方法都有一个快捷栏,是由一行图标组成的表格,它用来说明该项是否可用和用法建议。如果注意一下这个快捷栏,可以避免不少浪费掉的时间。更多细节参看JavaScript for Acrobat API Reference
 保密上下文:这本参考手册包含了在保密上下文中运行JavaScript的细节信息,它的内容远不止JavaScript for Acrobat API Reference中提到那些。
 安全路径:Acrobat6.0引入了安全路径的概念,它主要是针对那些通过参数向本地硬盘写数据的JavaScript方法。通常,如果一个路径被判断为不安全,会引发一个NotAllowedError异常。关于安全路径的更多信息参考JavaScript for Acrobat API Reference。
注意:本书中的示例脚本大多数都是用路径“/c/temp/”作为安全路径。

对象(Object)一览表
Acrobat JavaScript在核心JavaScript之外的扩展部分定义了许多对象。通过这些对象,你可以使用代码与Acrobat应用程序、PDF文档或者PDF文档里的一个表单区域交互。本章节介绍了访问和控制程序、文档、开发环境和JavaScript通用函数的主要对象(Object)。
下述是主要对象(Object)的一个简短列表。每个对象的主要描述附在表格后面。
对象(Object)   目标
ADBC   数据库连接与查询
app   Acrobat
console   JavaScript Debugger
dbg   Debugger
dialog   模式对话框
Doc   PDF文档
event   JavaScript events
global   跨文档的长期存在的信息
search   搜索和索引
security   加密和数字签名
SOAP   Web服务
util   JavaScript工具方法集

app
app对象是一个静态对象,指Acrobat应用程序本身。它提供了许多Acrobat特有的功能,其中也包括应用程序本身的基本功能。使用app对象,你可以打开或创建PDF文档,通过设置视图模式来自定义Acrobat界面、右键菜单、警告和thermometers,显示一个模式对话框,控制时间间隔,控制是否执行计算,是否执行email操作,定义工具栏按钮,菜单和菜单项。你可以访问app来获得Adobe产品的版本和正在使用它的用户(例如Adobe Reader 8 或者 Acrobat Professional 7.0),甚至得到打印机名称和可用的色彩空间。


Doc
Doc对象是PDF文档的主要接口。用来访问和操作PDF文档的内容。Doc对象提供了接口使PDF文档在浏览器和JavaScript编译器之间访问。访问Doc对象可以得到文档、文档内目录的主要信息,可以控制它的结构、行为和格式,可以在文档内创建新内容,可以访问文档内的其他对象(书签、表单、模板、注释、音频等)。

下图是与Doc对象有关的其他对象的层次模型。





JavaScript中访问Doc对象有好几种方式。最常用的方法是使用this对象。this通常指当前的PDF文档。
dbg
dbg对象只在Acrobat Professional中可用,用来控制JavaScript Debbuger。如果应用程序没有模式对话框则通过命令行控制。dbg对象方法提供了与JavaScript Debbuger对话框工具栏一样的功能,例如单步执行,设置、移除和检查断点,退出调试器。
console
console对象是用来访问JavaScript控制台、显示调试信息和执行JavaScript的静态对象。它作为一个调试助手是很有用的,也可以用来交互地测试代码。它也只在Acrobat Professional中有效。
global
global对象用来存储那些要在不同Acrobat中都是用的数据,或者用在多文档数据共享中。Global数据共享和多文档的访问通过订阅机制实现。它监视global变量并向订阅了的文档报告它们的值。另外,global对象可以用来存储一组文档的公共信息,或一系列批处理执行时的公共状态。例如经常把操作文档的数目作为一个global属性记录。如果这些文档的信息需要保存在Report对象中,也需要访问global对象,因为Report对象是global中的一组属性。
util
util是一个静态JavaScript对象,它定义了许多工具方法和函数(数字和日期的格式化和分解)。它也可以用来转换富文本和XML描述的文本。
dialog
dialog对象是被app对象的execDialog方法使用的文字对象(?object literal)。用来提交一个外观和行为与所有Adobe应用程序一样的模式对话框。dialog文字对象包含一系列事件处理器和属性,它们用来定义模式对话框的行为和内容。它们大概包括:push buttons, check box,radio buttons,list boxes,text boxes,popup controls,和容纳这些控件的容器和框架。
security
security对象是一个JavaScript静态对象,它可以不受约束的在所有Acrobat应用程序(包括Adobe Reader)之间使用。……
SOAP
SOAP对象使用WSDL来远程调用和请求Web服务,支持SOAP1.1和1.2。Adobe Reader 6.0以及其后的版本支持的文件格式中,SOAP都可用。使用SOAP对象可以通过web服务远程分享电子表单和评论。它支持富文本格式、HTTP验证、WS-Security、SOAP头、错误处理、……
search
……
ADBC
……
event
……


JavaScript应用程序
使用Acrobat JavaScript可以在Acrobat和Adobe Reader中做很多事。Acrobat扩展版中的JavaScript可以完成以下这些操作:
 创建PDF
 创建Acrobat表单
 方便的浏览、标记和批阅
 在文档中使用数字媒体
 自定义用户界面
 搜索和索引文档和文档元数据
 使文档更安全
 管理使用权限
 与数据库交互
 与web服务交互
 XML