骆遥
摘 要 通过一个PDF文件阅读器Free PDF Reader的开发实例,讨论了使用Foxit Reader SDK(ActiveX)的具体编程方法,实现了PDF格式电子文档的显示功能,并通过对真彩工具条和箭头下拉按钮的编程,获得了与商业PDF阅读软件Foxit Reader较为一致的外观效果和软件功能。
关键词 PDF,Visual C++,ActiveX,程序设计
一、引言
PDF(Portable Document Format),是Adobe公司开发的电子文件格式,PDF文件格式与操作系统平台无关,即PDF文件不管是在Windows、Linux、Unix还是在苹果公司的Mac OS操作系统中都是通用的,且其显示效果与操作系统的平台无关。这一特点使它成为在Internet上进行电子文档发行和数字化信息传播的理想文档格式,电子图书(特别是科学学术论文,期刊)、文告、网络资料等普遍使用PDF格式文件。PDF格式文件已经成为数字化信息事实上的工业标准,在交互、传递电子文件的软件开发中对PDF文件显示是必不可少的功能。在MFC工程中实现PDF文件显示通常的做法是调用Adobe Reader提供的ActiveX以及后续推出的SDKs (software development kits),但是Adobe开发的Adobe Reader越来越庞大,开发维护成本极具上升。针对Adobe SDKs的问题,本文介绍了如何应用Foxit Reader SDK(ActiveX)(Foxit Reader开发包ActiveX版)实现MFC中PDF文件的显示,通过开发一个PDF文件阅读器的实例——Free PDF Reader(如图1所示)来讨论对Foxit Reader SDK(ActiveX)的开发使用,其中应用了一些关于工具条编程方面的实例技巧,以及文件查找的编程接口。其具体的开发环境是:Microsoft Visual C++6.0(SP6)、Windows XP简体中文。
图1 开发的PDF文件阅读器Free PDF Reader及其浏览效果
Foxit Reader SDK(ActiveX)与Foxit Reader(注:Foxit Reader是一款免费的PDF文档阅读器和打印器,具有令人难以置信的小巧体积、快捷的启动速度和丰富的功能,是目前十分流行的一款PDF文件阅读器)使用相同的PDF显示引擎(Rendering Engine),只要Foxit Reader能够打开的PDF文件,这个ActiveX版本的开发工具包就能够正常的显示,并且显示质量和显示速度与Foxit Reader完全一致,毫无差别。Foxit Reader SDK 控件是一个单独的文件(foxitreader_ax.ocx),可以从www.foxitsoftware.com上免费下载,本文的代码中提供了该文件,使用时需要用“regsvr32 [foxitreader_ax.ocx文件路径及文件名 ]”命令进行ActiveX安装注册,这里为方便读者编译本文的源代码而编写了批处理文件(编译代码仅需要双击代码目录下的“编译工程.bat”文件即可),简化了ActiveX的注册及程序编译连接过程、方便用户编译Free PDF Reader实例的源代码。
二、Foxit Reader SDK的使用
|