劉薇
[摘要] 虛擬打印是利用某種方式截獲操作系統的打印任務,將打印任務轉換為圖像文件并保存在指定目錄的方法。利用FLASH腳本語言編輯的SWF格式文件可在任何瀏覽器中顯示。本文展示了利用FLASH腳本語言與虛擬打印技術實現文檔在線瀏覽的方法。用戶不需要安裝任何插件或相應的閱讀工具便可以直接瀏覽到任何文件的原文。
[關鍵詞] 虛擬打印; 在線閱讀; FLASH腳本
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2012 . 04. 034
[中圖分類號]F272.9;TP393.0[文獻標識碼]A[文章編號]1673 - 0194(2012)04- 0059- 01
隨著網絡上信息量的增大,有的網站通過限制其用戶上傳信息量或文件格式來減輕服務器的負擔。但當我們需要在瀏覽器中閱讀時,只能將文件下載到本地,使用恰當的閱讀工具進行瀏覽。虛擬打印是將打印任務轉換為圖像文件在線瀏覽的方式,在Web環境、多客戶端情況下,客戶端不需要安裝多種應用程序。
1虛擬打印技術簡介
虛擬打印是通過虛擬打印驅動器(Virtual Printer Driver,簡稱VPD)獲取各種應用程序的打印任務,并將打印任務中的不同格式文件轉換成統一的文件格式,存儲在計算機磁盤上,由一種應用程序瀏覽,這樣便于實現瘦客戶端設計,降低應用系統的成本。應用程序執行打印功能的過程,主要分3個階段:
(1) 應用程序調用與硬件設備無關的Win32打印和GDI模塊,找到操作系統中的Winspool.dll和Gdi32.dll模塊;
(2) 打印驅動結合GDI模塊將數據流發送到Spooler模塊;
(3) Spooler處理打印數據并將其發送到與目標打印機相連的端口驅動上,轉換成與打印設備要求格式一致的數據發送到打印設備。
2文檔在線瀏覽的實現
利用虛擬打印技術實現文檔在線瀏覽主要包括兩個部分:獲取打印任務和格式轉換。
打印任務是由應用程序產生并進行初始化的。在打印子系統中應用程序通過GDI調用GDI的繪制引擎,繪制引擎在打印驅動文件的幫助下產生一個原始的打印任務,包括打印數據文件,同時結合打印驅動器提供的關于打印機的信息,如打印機提供的打印解決方案、紙張大小等,最終形成打印任務。
Render Plug-ins是由Microsoft提供的一組打印子系統功能回調函數,通過這些回調函數可以在打印任務發送到打印系統的spooler模塊之前截獲打印任務。
Render Plug-ins中使用到的回調函數主要有:
BOOL APIENTRY OEMStartDoc:打印文檔開始信息
BOOL APIENTRY OEMEndDoc:打印文檔結束信息
BOOL APIENTRY OEMStartPage:打印文檔頁開始信息
BOOL APIENTRY OEMStartBanding:打印文檔頁段開始信息
BOOL APIENTRY OEMNextBand:打印文檔下一頁段信息
獲取打印任務后,對打印任務中打印數據進行分析,提取出打印文檔頁面信息并且保存打印結果。其中主要的過程包括:① 獲取系統配置信息,包括虛擬打印結果保存的文件類型、縮放比例以及存放的臨時目錄的位置路徑等,轉換成SCII、位圖等信息使用。② 打印數據的重組。系統將每一頁打印文檔的數據劃分成4個段(Band),分段傳輸。在OEMStartBanding獲得打印頁數據段的開始信息,循環調用OEMNextBand獲得每一個頁段的數據,將數據段重新連接在一起就得到了完整的打印頁的數據,并將其轉化為對應的打印元素。
由于系統執行打印任務時會重組打印數據,所以進行虛擬格式轉換時,對應的打印元素的位置會與原文件不同,這就需要固定的模板將打印元素按原位排列,才能保證虛擬打印得到的文檔滿足以下條件:一是具有與紙張印刷等同的表現能力;二是能兼容各種數據文件格式統一;三是適合信息化需要,靈活的界面尺寸縮放顯示便于傳播,支持印刷輸出和文字位置搜索。
3利用FLASH腳本語言編寫SWF模板文件
FLASH腳本是在傳統的FLASH制作工具的基礎之上,使用恰當的動作、屬性、函數或方法來控制影片的方法。FLASH腳本可以用來控制影片播放、編寫動畫特效、制作程序(如音樂播放器)、處理圖像、做視頻等,生成的SWF格式文件可在任何瀏覽器中顯示,用戶不需要安裝任何插件或相應的閱讀工具便可以直接瀏覽到原文。利用FLASH腳本語言制定一個模板,使其能夠實現文字位置檢索、按比例縮放顯示區域、打印等功能。
該SWF模板文件具有以下特點:
(1) 生成文檔簡單、快捷、準確,直接通過原文檔轉換生成,不需編輯校對;
(2) 文檔不可篡改,保證文檔嚴肅性和完整性;
(3) 文檔版式與原文打印輸出的紙質效果完全一致,原版原式,完美地展現原文內容和格式;
(4) 文檔閱讀方便,可以直接通過IE在線瀏覽,或者下載閱讀;
(5) 文檔完全脫離開發的應用系統編輯排版軟件環境,不再受應用系統的約束,可靠性、安全性更高;
(6) 轉換后文檔格式一般比原文件更小,從而能夠實現更快捷的傳輸、存儲和管理。
虛擬打印機的安裝操作簡單,只需要在服務器端通過在控制面板中選擇添加打印機的方式來安裝,并將其設置為默認打印機即可。
同時在應用系統程序中寫入調用代碼,當用戶上傳原文件到服務器時,系統便可以自動檢測文件,將其轉換為SWF格式文件在瀏覽器中顯示。
4結束語
本文對虛擬打印技術進行了研究,建立了文件格式轉換的SWF模板,并對打印任務的獲取以及格式轉換的處理過程進行了分析。FLASH腳本和虛擬打印技術的結合,為無紙化辦公添加了新的電子文檔表現形式。這種方法可以有效地保證文檔的真實性、完整性和安全性,在任何瀏覽器中均可顯示,能夠加強我們文件的信息化管理。