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