廖梦虎
(武汉铁路职业技术学院,湖北武汉 430205)
PDF(Portable Document Format,可移植文档格式)是目前广泛应用的一种与操作系统无关的电子文档格式,是数字化信息事实上的工业标准。但PDF文档必须借助PDF阅读器才能阅读,这给需要在应用程序中直接阅读的用户带来了不便。针对此问题,作者在使用PowerBuilder开发项目过程中利用FoxitReader SDK(ActiveX)控件实现了PDF文档的显示,用户在没有安装阅读器的情况下,也可以浏览PDF文档了[1]。
Foxit Reader SDK控件是一个独立的文件(控件名:FoxitReader_ax_pro.ocx),可以从www.foxitsoftware.com网站上免费下载。
PowerBuilder中使用Foxit Reader SDK控件,是通过OLE[2]对象链接控件的。在使用OLE(Object Linking and Embedding,对象链接与嵌入)对象链接控件前,须先注册该控件。注册控件既可使用Windows提供的注册命令(regsvr32),也可在PowerBuilder的窗口画板中实现注册。PowerBuilder中注册控件的方法是:在Power-Builder的窗口画板中单击PowerBuilder控件箱中OLE图标,出现“插入对象”对话框,单击“Register New…”按钮,从打开的“Browse”对话框中选择FoxitReader_ax_pro.ocx控件,然后单击“打开”按钮,完成FoxitReader_ax_pro.ocx控件的注册。
注册FoxitReader_ax_pro.ocx控件后在“Insert Control”选项卡的“Control Type”列表框中显示如图1所示[3]。
为了去掉FoxitReader SDK控件带有的默认外观,需对该对象进行初始化设置。
初始化代码如下:
SDK中使用OpenFile读入PDF文档,CloseFile关闭PDF文档,Save保存当前文档。
读入PDF文档:
浏览PDF文档过程中需要浏览指定的页面,如转到“上一页”、“下一页”、“首页”和“最后一页”。SDK中使用如下代码完成跳转:
注意:SDK中PDF文档的页码是从0开始的,为了不使转到没有的页码,通常使用Page-Count获得PDF文档的总页码,而使用CurPage获得当前页。
浏览PDF文档时,根据需要调整页面的大小,如果是生成或转换的PDF文档(扫描的PDF文档除外),其文字缩放无任何失真。FoxitReader SDK控件中使用ZoomLevel调整PDF文档阅读页面的方法。
下面的代码是实现PDF文档阅读页面逐次放大。
下面的代码是实现PDF文档阅读页面逐次缩小。
如图2是一个用于阅读PDF文档的窗口,窗口中包括首页、前一页、下一页、末页、放大、缩小、打开文件按钮,窗口的标题栏中显示打开的PDF文档名称。
图2 阅读器示例
初始化及首页、前一页、下一页、末页、放大、缩小按钮代码如上所述,“打开文件”按钮代码如下:
OLE是Windows系统中允许应用程序共享数据和程序功能的一种标准的便利方法。在PowerBuilder中充分使用OLE对象链接控件,非常方便地实现系统的功能。本文通过OLE对象链接Foxit Reader SDK(ActiveX)控件,实现了在程序中就能阅读PDF文档的功能,无需切换窗口,非常方便。
1 路遥.PDF文件阅读器[J].电脑编程技巧与维护,2007.7
2 百度百科,http://baike.baidu.com/view/118545.htm,2011-12-30
3 向隅.新编PowerBuilder程序设计实例教程[M].北京:清化大学出版社,2009