论文部分内容阅读
Adobe的Acrobat PDF,在出版、办公、金融、建筑、创意、制造业等不同专业领域都有广泛应用,所以基于它的插件开发虽然不如Office软件那样普遍,但是却有着很高的含金量:因为它所涉及领域的人群,掏钱购买插件的意愿比较高。今天我们就来聊聊Acrobat PDF的插件开发(以下统称为PDF插件)。
【芝麻开门】PDF脚本和插件
开发PDF插件,需要从Adobe网站下载相应的开发工具箱(http://www.adobe.com/devnet/acrobat/?view=downloads),它其实就是一个压缩包,解压后会发现里面有很多模板程序及工具,而且还包含了详细的说明文档。
PDF商业插件,简单从形式上来说,是那些安装在Acrobat或者Reader的plug_ins子目录中的API文件。这些API文件,说白了就是些Windows的动态链接库文件(DLL)。
商业插件通过VC、VB、Delphi之类的专业开发工具来完成,技术门槛相对较高,一般读者暂时可能无法接受。所以今天我们主要介绍PDF脚本的开发(即Acrobat JavaScript),它的语法结构与应用于浏览器中的JavaScript几乎一样,只不过多了一些对PDF对象等的特殊调用,所以初学者比较容易接受。而且Acrobat JavaScript对PDF对象调用等方法,对以后学习API插件开发同样有帮助。
网络大补贴:
工欲善其事,必先利其器。开发PDF插件之前应先对Acrobat这款软件有所掌握,另外对它的对象模型等与开发相关的知识也要有了解。
★Acrobat9试用版下载:http://www.adobe.com/cn/products/acrobatpro/tryout.html
★Acrobat9标准版中文帮助:http://tinyurl.com/y8kcs7f
★Acrobat9中文帮助PDF版:http://tinyurl.com/y8rbktr
★Acrobat开发中心:http://www.adobe.com/devnet/acrobat
人物专访
有些程序员对插件开发不以为然,不过我个人对它情有独钟,因为我编程生涯的第一桶金,与插件开发颇有关联。
我刚参加工作时,曾私下接过一个外单,是为某家杂志制作全年的全文检索电子书。这家杂志原来用的是专业的数据库检索系统,制作成本很高,一张600MB的全文检索光盘,制作公司要价3万多元。我只要8000元就拿下了这个项目,主要因为我是个人业余制作,没有什么硬成本,另外Acrobat PDF自身的全文检索功能已经很强大,我只是通过它内嵌的Acrobat JavaScript支持开发出一些小插件,让它自身的PDF全文检索更方便调用而已,开发成本也就低了很多。
也是因为这一成功案例,我一直关注着PDF插件开发的发展。其实PDF相关的开发,有着巨大的商机,比如基于Foxit Reader(一款第三方PDF阅读器:http://www.fuxinsoftware.com.cn/)延伸出的一系列产品,可以支撑起一家软件公司;再比如国外许多PDF插件产品,售价都近百甚至好几百美元,比一般的软件都贵。
项目简介
本例主要为让大家熟悉Acrobat JavaScript的开发流程,所以实现的功能相对简单:为已经制作好的静态PDF相册添加动态效果,PDF相册一打开就自动全屏显示,翻页时显示不同的动态效果(如马赛克、百叶窗效果等)。本例在Acrobat CS3下实现。
编写代码
在Acrobat中制作好PDF静态相册后,点击菜单“高级→文档处理→文档级JavaScript”,打开脚本编辑器,输入脚本名称(需用英文),然后点击“添加”,在弹出的窗口中,清除原有内容后填写如下代码(见图2):
this.setPageTransitions({ aTrans: [-1, "Random", 1] } );
app.fs.isFullScreen=true;
点击“确定→关闭”返回,按Ctrl+S键保存文档。上面代码中,第一行设置文档翻页特效,第二行设置文档打开后自动全屏,使得相册看起来更专业。
给自己的脚本加把锁
上面的代码比较简单,没有保护的必要,可一旦你写出了具有商业价值的脚本代码时,肯定不想随便让别人看到,那不妨将它们“锁”起来(此方法仅适用文档内脚本)。
在Acrobat中,点击菜单“文件→属性”,在属性窗口中切换到“安全性”选项卡,安全性方法选择“口令安全性”,又会弹出如图3所示窗口。勾选“限制文档编辑和打印。改变这些许可设置需要口令”,再设置许可口令,确定后保存文档即可。
使用Reader的用户是无法查看到PDF中的密码的,其他人即使也有Acrobat,如果你经过了以上加密处理,他们打开PDF文档后,会发现“编辑全部JavaScript”、“文档级JavaScript”、“设置文档动作”等命令是灰色不可用状态的,也就无法查看代码了。
【任务实战二】智能编制PDF网址簿
给PDF插入脚本,如同添加了智慧“芯”,更智能地处理任务。比如网上不少的PDF电子书中,包含大量网址资源,如果想提取出来收藏,手工操作未免太麻烦,通过脚本则可以一键完成。
启动Acrobat,点击菜单“高级→文档处理→批处理”打开批处理序列窗口,单击“新建序列”按钮,为序列取一个名称,如“提取网址”,确定后打开如图4所示窗口。单击“选择命令”,然后选中“执行JavaScript”,将其添加到右侧窗格,再点击“编辑”,在打开的编辑器中输入脚本代码,连续“确定”返回即可。
详细脚本代码参见http://work.newhua.com/cfan/201009/ExtraURL.zip,值得说明的是,其中:
var reMatch=/((((ht|f)tp(s?))\:\/\/)|(www.))([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?/g;
是通过正则表达式定义要从文档中提取的内容,这里为带http、https、ftp、www等特征的网址字符串。修改此变量,可达到提取文档中其他任意字符串的目的。接下来的ExtractFromDocument()函数是提取网址的具体实现,有兴趣的朋友可以参考源代码(内附注释)。
它的使用很简单:同上打开批处理序列窗口,选中刚刚创建的脚本,单击“运行序列”,按提示选择要提取网址的PDF文档,确定即可。很快会在源文件同目录下生成一个类似“CFan_中提取出的网址.pdf”文件,效果如图5示。
【高手进阶】
下面给大家推荐一些不错的PDF插件资源网站。因为PDF插件开发在国内还没形成很大规模,而在国外市场就成熟多了,相应的国外资源也就多一些。
★Acrobat脚本实例教程:http://tinyurl.com/y7ew9mq
★Acrobat脚本讨论:http://tinyurl.com/2ua94r
★中文PDF交流社区:http://www.chinapdf.com
★PDF插件开发的新闻、文章等资源网站:http://www.pdfzone.com
★PDF新闻、事件、软件等资源的网站:http://www.planetpdf.com
【芝麻开门】PDF脚本和插件
开发PDF插件,需要从Adobe网站下载相应的开发工具箱(http://www.adobe.com/devnet/acrobat/?view=downloads),它其实就是一个压缩包,解压后会发现里面有很多模板程序及工具,而且还包含了详细的说明文档。
PDF商业插件,简单从形式上来说,是那些安装在Acrobat或者Reader的plug_ins子目录中的API文件。这些API文件,说白了就是些Windows的动态链接库文件(DLL)。
商业插件通过VC、VB、Delphi之类的专业开发工具来完成,技术门槛相对较高,一般读者暂时可能无法接受。所以今天我们主要介绍PDF脚本的开发(即Acrobat JavaScript),它的语法结构与应用于浏览器中的JavaScript几乎一样,只不过多了一些对PDF对象等的特殊调用,所以初学者比较容易接受。而且Acrobat JavaScript对PDF对象调用等方法,对以后学习API插件开发同样有帮助。
网络大补贴:
工欲善其事,必先利其器。开发PDF插件之前应先对Acrobat这款软件有所掌握,另外对它的对象模型等与开发相关的知识也要有了解。
★Acrobat9试用版下载:http://www.adobe.com/cn/products/acrobatpro/tryout.html
★Acrobat9标准版中文帮助:http://tinyurl.com/y8kcs7f
★Acrobat9中文帮助PDF版:http://tinyurl.com/y8rbktr
★Acrobat开发中心:http://www.adobe.com/devnet/acrobat
人物专访
有些程序员对插件开发不以为然,不过我个人对它情有独钟,因为我编程生涯的第一桶金,与插件开发颇有关联。
我刚参加工作时,曾私下接过一个外单,是为某家杂志制作全年的全文检索电子书。这家杂志原来用的是专业的数据库检索系统,制作成本很高,一张600MB的全文检索光盘,制作公司要价3万多元。我只要8000元就拿下了这个项目,主要因为我是个人业余制作,没有什么硬成本,另外Acrobat PDF自身的全文检索功能已经很强大,我只是通过它内嵌的Acrobat JavaScript支持开发出一些小插件,让它自身的PDF全文检索更方便调用而已,开发成本也就低了很多。
也是因为这一成功案例,我一直关注着PDF插件开发的发展。其实PDF相关的开发,有着巨大的商机,比如基于Foxit Reader(一款第三方PDF阅读器:http://www.fuxinsoftware.com.cn/)延伸出的一系列产品,可以支撑起一家软件公司;再比如国外许多PDF插件产品,售价都近百甚至好几百美元,比一般的软件都贵。
项目简介
本例主要为让大家熟悉Acrobat JavaScript的开发流程,所以实现的功能相对简单:为已经制作好的静态PDF相册添加动态效果,PDF相册一打开就自动全屏显示,翻页时显示不同的动态效果(如马赛克、百叶窗效果等)。本例在Acrobat CS3下实现。
编写代码
在Acrobat中制作好PDF静态相册后,点击菜单“高级→文档处理→文档级JavaScript”,打开脚本编辑器,输入脚本名称(需用英文),然后点击“添加”,在弹出的窗口中,清除原有内容后填写如下代码(见图2):
this.setPageTransitions({ aTrans: [-1, "Random", 1] } );
app.fs.isFullScreen=true;
点击“确定→关闭”返回,按Ctrl+S键保存文档。上面代码中,第一行设置文档翻页特效,第二行设置文档打开后自动全屏,使得相册看起来更专业。
给自己的脚本加把锁
上面的代码比较简单,没有保护的必要,可一旦你写出了具有商业价值的脚本代码时,肯定不想随便让别人看到,那不妨将它们“锁”起来(此方法仅适用文档内脚本)。
在Acrobat中,点击菜单“文件→属性”,在属性窗口中切换到“安全性”选项卡,安全性方法选择“口令安全性”,又会弹出如图3所示窗口。勾选“限制文档编辑和打印。改变这些许可设置需要口令”,再设置许可口令,确定后保存文档即可。
使用Reader的用户是无法查看到PDF中的密码的,其他人即使也有Acrobat,如果你经过了以上加密处理,他们打开PDF文档后,会发现“编辑全部JavaScript”、“文档级JavaScript”、“设置文档动作”等命令是灰色不可用状态的,也就无法查看代码了。
【任务实战二】智能编制PDF网址簿
给PDF插入脚本,如同添加了智慧“芯”,更智能地处理任务。比如网上不少的PDF电子书中,包含大量网址资源,如果想提取出来收藏,手工操作未免太麻烦,通过脚本则可以一键完成。
启动Acrobat,点击菜单“高级→文档处理→批处理”打开批处理序列窗口,单击“新建序列”按钮,为序列取一个名称,如“提取网址”,确定后打开如图4所示窗口。单击“选择命令”,然后选中“执行JavaScript”,将其添加到右侧窗格,再点击“编辑”,在打开的编辑器中输入脚本代码,连续“确定”返回即可。
详细脚本代码参见http://work.newhua.com/cfan/201009/ExtraURL.zip,值得说明的是,其中:
var reMatch=/((((ht|f)tp(s?))\:\/\/)|(www.))([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?/g;
是通过正则表达式定义要从文档中提取的内容,这里为带http、https、ftp、www等特征的网址字符串。修改此变量,可达到提取文档中其他任意字符串的目的。接下来的ExtractFromDocument()函数是提取网址的具体实现,有兴趣的朋友可以参考源代码(内附注释)。
它的使用很简单:同上打开批处理序列窗口,选中刚刚创建的脚本,单击“运行序列”,按提示选择要提取网址的PDF文档,确定即可。很快会在源文件同目录下生成一个类似“CFan_中提取出的网址.pdf”文件,效果如图5示。
【高手进阶】
下面给大家推荐一些不错的PDF插件资源网站。因为PDF插件开发在国内还没形成很大规模,而在国外市场就成熟多了,相应的国外资源也就多一些。
★Acrobat脚本实例教程:http://tinyurl.com/y7ew9mq
★Acrobat脚本讨论:http://tinyurl.com/2ua94r
★中文PDF交流社区:http://www.chinapdf.com
★PDF插件开发的新闻、文章等资源网站:http://www.pdfzone.com
★PDF新闻、事件、软件等资源的网站:http://www.planetpdf.com