廖夢虎
(武漢鐵路職業(yè)技術(shù)學院,湖北武漢 430205)
PDF(Portable Document Format,可移植文檔格式)是目前廣泛應用的一種與操作系統(tǒng)無關(guān)的電子文檔格式,是數(shù)字化信息事實上的工業(yè)標準。但PDF文檔必須借助PDF閱讀器才能閱讀,這給需要在應用程序中直接閱讀的用戶帶來了不便。針對此問題,作者在使用PowerBuilder開發(fā)項目過程中利用FoxitReader SDK(ActiveX)控件實現(xiàn)了PDF文檔的顯示,用戶在沒有安裝閱讀器的情況下,也可以瀏覽PDF文檔了[1]。
Foxit Reader SDK控件是一個獨立的文件(控件名:FoxitReader_ax_pro.ocx),可以從www.foxitsoftware.com網(wǎng)站上免費下載。
PowerBuilder中使用Foxit Reader SDK控件,是通過OLE[2]對象鏈接控件的。在使用OLE(Object Linking and Embedding,對象鏈接與嵌入)對象鏈接控件前,須先注冊該控件。注冊控件既可使用Windows提供的注冊命令(regsvr32),也可在PowerBuilder的窗口畫板中實現(xiàn)注冊。PowerBuilder中注冊控件的方法是:在Power-Builder的窗口畫板中單擊PowerBuilder控件箱中OLE圖標,出現(xiàn)“插入對象”對話框,單擊“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關(guān)閉PDF文檔,Save保存當前文檔。
讀入PDF文檔:
瀏覽PDF文檔過程中需要瀏覽指定的頁面,如轉(zhuǎn)到“上一頁”、“下一頁”、“首頁”和“最后一頁”。SDK中使用如下代碼完成跳轉(zhuǎn):
注意:SDK中PDF文檔的頁碼是從0開始的,為了不使轉(zhuǎn)到?jīng)]有的頁碼,通常使用Page-Count獲得PDF文檔的總頁碼,而使用CurPage獲得當前頁。
瀏覽PDF文檔時,根據(jù)需要調(diào)整頁面的大小,如果是生成或轉(zhuǎn)換的PDF文檔(掃描的PDF文檔除外),其文字縮放無任何失真。FoxitReader SDK控件中使用ZoomLevel調(diào)整PDF文檔閱讀頁面的方法。
下面的代碼是實現(xiàn)PDF文檔閱讀頁面逐次放大。
下面的代碼是實現(xiàn)PDF文檔閱讀頁面逐次縮小。
如圖2是一個用于閱讀PDF文檔的窗口,窗口中包括首頁、前一頁、下一頁、末頁、放大、縮小、打開文件按鈕,窗口的標題欄中顯示打開的PDF文檔名稱。
圖2 閱讀器示例
初始化及首頁、前一頁、下一頁、末頁、放大、縮小按鈕代碼如上所述,“打開文件”按鈕代碼如下:
OLE是Windows系統(tǒng)中允許應用程序共享數(shù)據(jù)和程序功能的一種標準的便利方法。在PowerBuilder中充分使用OLE對象鏈接控件,非常方便地實現(xiàn)系統(tǒng)的功能。本文通過OLE對象鏈接Foxit Reader SDK(ActiveX)控件,實現(xiàn)了在程序中就能閱讀PDF文檔的功能,無需切換窗口,非常方便。
1 路遙.PDF文件閱讀器[J].電腦編程技巧與維護,2007.7
2 百度百科,http://baike.baidu.com/view/118545.htm,2011-12-30
3 向隅.新編PowerBuilder程序設計實例教程[M].北京:清化大學出版社,2009