摘要:隨著軟硬件國產(chǎn)化的推進(jìn),辦公場景中Linux替代Windows在國內(nèi)已逐漸形成趨勢,在這個過程中,由于舊設(shè)備的淘汰是一個循序漸進(jìn)的過程,存在各類設(shè)備的利舊,除了電腦利舊,還包括各種外設(shè)利舊,其中打印機(jī)的問題最突出。本方法通過云打印方式,解決國產(chǎn)化桌面的打印兼容問題,并避免直接使用Linux安裝物理打印機(jī)驅(qū)動帶來的管理和維護(hù)工作量。
關(guān)鍵詞:云打印;國產(chǎn)化;虛擬打印機(jī);安全打印;利舊
打印機(jī)通常采用USB連接或者網(wǎng)絡(luò)共享的方式添加到國產(chǎn)化終端本地桌面,個別針式打印機(jī)通過串口或者并口連接到終端本地,從而實(shí)現(xiàn)打印功能。該方式存在以下弊端,首先是不同的打印機(jī)驅(qū)動不一樣,每臺機(jī)器都需要安裝有各式各樣的打印機(jī)驅(qū)動,不僅容易出現(xiàn)軟件沖突,同時也讓系統(tǒng)變得臃腫;其次辦公環(huán)境下,一個辦公室甚至一個樓層只有少數(shù)幾臺打印機(jī),但是每臺機(jī)器都需要安裝打印機(jī)驅(qū)動才能打印,日常管理和維護(hù)工作量大;第三通過網(wǎng)絡(luò)共享的方式添加到本地,往往打印機(jī)離工位都比較遠(yuǎn),打印輸出的文檔不在可視范圍,容易出現(xiàn)誤拿、錯拿、漏拿等,從而導(dǎo)致不必要的信息泄露;第四點(diǎn)到點(diǎn)的打印方式無法對打印的內(nèi)容進(jìn)行日常審計和事后追查;最后多數(shù)舊有的打印機(jī)缺少Linux系統(tǒng)適配的打印機(jī)驅(qū)動,無法對現(xiàn)有的打印機(jī)進(jìn)行充分利用。
針對上述提出的問題,本文提出一種云打印方法,并完成設(shè)計與實(shí)現(xiàn),進(jìn)而解決這些問題。
Linux打印主要是基于Adobe公司開發(fā)的PostScript頁面描述語言,這是一種與設(shè)備無關(guān)的語言,無需考慮打印機(jī)的自身特性,比如打印機(jī)的紙張、分辨率等,同時對于文本輸出和圖像輸出都是同樣的處理流程,這為系統(tǒng)統(tǒng)一處理打印提供了便利性。
打印系統(tǒng)的基礎(chǔ)是一個假脫機(jī)程序,在操作系統(tǒng)中以Spooler服務(wù)的方式存在,負(fù)責(zé)管理打印隊列,并將每個打印隊列與具體的打印機(jī)進(jìn)行關(guān)聯(lián)。打印隊列在被送往真實(shí)的物理打印過程中,需要經(jīng)過一個或者多個打印過濾器進(jìn)行過濾,通過過濾器將PostScript轉(zhuǎn)換成物理打印機(jī)可識別的頁面語言,確保打印動作可以被物理打印機(jī)真實(shí)執(zhí)行。
打印的完整流程如下,用戶通過應(yīng)用程序打開打印機(jī)執(zhí)行打印動作,假脫機(jī)程序Spooler將打印數(shù)據(jù)存放在打印隊列中,并通過任務(wù)調(diào)度方式將數(shù)據(jù)發(fā)送給過濾器,過濾器檢測打印機(jī)的打印能力,比如支持的頁面描述語言如PostScript還是PCL或者直接的圖像畫圖儀,然后調(diào)用GhostScript,對打印隊列中PostScript描述的打印數(shù)據(jù)進(jìn)行翻譯,輸出打印可識別的數(shù)據(jù)后發(fā)送給打印機(jī)進(jìn)行打印,打印結(jié)束后Spooler將此前存放在打印隊列中的數(shù)據(jù)刪除,并刪除對應(yīng)的打印任務(wù)。
云打印系統(tǒng)主要包含五個模塊,云打印客戶端、云打印控制器、云打印移動端、云打印服務(wù)器、云打印管理系統(tǒng),各模塊的具體職責(zé)如下:
a) 云打印客戶端,包含統(tǒng)一通用打印驅(qū)動和用戶操作界面,并負(fù)責(zé)與管理服務(wù)端進(jìn)行通信,獲取安全策略、上傳轉(zhuǎn)成PDF后的待打印文檔、獲取打印機(jī)列表等。用戶桌面只需安裝有客戶端,無需安裝物理打印機(jī)驅(qū)動;
b) 云打印控制器,負(fù)責(zé)用戶身份識別,并與管理服務(wù)器通信,下載待打印文檔,并執(zhí)行打印動作,同時通過長連接與服務(wù)器進(jìn)行通信,用于接收各種信令等;
c) 移動端掃描打印機(jī)二維碼(非必須組件),獲取打印機(jī)信息,并通知服務(wù)器用戶在哪臺打印機(jī)上進(jìn)行操作等;
d) 云打印管理系統(tǒng)用于打印機(jī)管理、用戶管理、用戶安全策略配置、打印機(jī)使用權(quán)限分配、打印記錄、打印統(tǒng)計等;
e) 云打印服務(wù)器提供通信接口,供客戶端和控制器獲取打印策略、文檔上傳和下載等。
下文將針對與打印直接相關(guān)的云打印客戶端和云打印控制器進(jìn)行詳細(xì)說明。
云打印客戶端主要分成兩個部分,統(tǒng)一通用打印驅(qū)動和桌面操作客戶端。用戶通過安裝云打印客戶端,避免安裝真實(shí)的物理打印驅(qū)動。
通用驅(qū)動用于接收脫機(jī)程序發(fā)送過來的PostScript數(shù)據(jù),并調(diào)用GhostScript進(jìn)行轉(zhuǎn)換,生成與設(shè)備無關(guān)的PDF文檔,同時獲取用戶配置打印的紙張規(guī)格、是否雙面打印和打印份數(shù)等各項配置,并通過命名管道方式,將打印參數(shù)和PDF文檔路徑信息發(fā)送給Agent。
Agent接收到數(shù)據(jù)后,根據(jù)管理員給用戶配置的安全策略如水印策略,對PDF添加水印操作,并將處理好的PDF文檔,連同打印參數(shù)送報服務(wù)端。添加水印可通過PoDoFo進(jìn)行處理。針對原始文檔為PDF文檔并且?guī)в忻艽a時,需要對生成后的PostScript文件過濾以"mark currentfile eexec"開頭的連續(xù)11行數(shù)據(jù),便于通過GhostScript轉(zhuǎn)成PDF。Agent將打印參數(shù)和PDF文件一并提交到云打印服務(wù)端。
部分PDF文檔的坐標(biāo)系與默認(rèn)的坐標(biāo)存在不一致的現(xiàn)象,如果機(jī)械的使用默認(rèn)坐標(biāo)系,存在水印添加后文本方向顛倒的問題。PDF每頁都有標(biāo)記當(dāng)前頁面的坐標(biāo)系參數(shù),通過對水印文本坐標(biāo)進(jìn)行變換,可得到最終的水印坐標(biāo),具體如下:
假設(shè)PDF頁面坐標(biāo)為m:
水印文本的坐標(biāo)為M:
則水印的最終坐標(biāo)為M:在新坐標(biāo)系中,繪制完水印后,經(jīng)過坐標(biāo)系旋轉(zhuǎn)變換映射到原坐標(biāo)系,就可以正常顯示指定傾斜角度的水印文本。
為了提升打印驅(qū)動的兼容性,云打印控制器安裝在經(jīng)過安全加固過后的Windows系統(tǒng),訪問界面通過深度定制,限制僅允許訪問云打印控制器和打印機(jī)管理,網(wǎng)絡(luò)層通過NDIS驅(qū)動,限制該主機(jī)僅能與云打印服務(wù)端進(jìn)行通信。針對僅連接單臺打印機(jī)的場景,可增加射頻卡讀卡器模塊,用戶通過刷工牌方式,對用戶的身份進(jìn)行識別,針對連接多臺打印機(jī)的場景,采用移動端掃描方式,對打印機(jī)和用戶身份進(jìn)行識別。云打印服務(wù)端通過長連接方式下發(fā)待打印文檔的隊列ID信息,云打印控制器通過ID向服務(wù)端請求下載指定的待打印文檔,并獲取相應(yīng)的打印參數(shù),在本地執(zhí)行最終的打印動作并輸出。
采用云打印方式解決國產(chǎn)化環(huán)境中的打印問題,可以有效的進(jìn)行打印機(jī)利舊,通過對最終打印輸出的機(jī)器進(jìn)行安全加固,可以有效的降低系統(tǒng)的安全風(fēng)險,在提升打印體驗的同時避免信息的泄露,所有的打印內(nèi)容均在云打印服務(wù)端有備份,便于做后續(xù)的打印審核和打印審計。
參考文獻(xiàn):
[1]張婷,吳遠(yuǎn)征.基于“云計算”的云打印服務(wù)模式構(gòu)建[J].江蘇商論,2013,(04):31-34.
[2]王娜,盧智勇.一種基于專用網(wǎng)絡(luò)的云打印應(yīng)用實(shí)例[J].中國新通信,2012,(21):63-64
陳建輝(1985-),男,漢族,福建泉州人,主要研究方向為云應(yīng)用的相關(guān)技術(shù)及其應(yīng)用。