1. 程式人生 > >debian 安裝印表機驅動及印表機共享

debian 安裝印表機驅動及印表機共享

Debian列印介紹

列印對於Linux/Unix類系統來說,曾經沒有一點問題,但那是很久以前的事情了。隨著各種新型印表機的出 現,特別是很多不支援 PostScript 功能的廉價印表機,曾一度使在Linux上的列印變得非常困難。但現在,情況已經完全不同了,在Linux上列印已經越來越方便,用Linux作為列印服 務器,已經成為很多大小企業的選擇。

在具體講述如何安裝印表機之前,先來看一下對於列印的一些比較關鍵的問題。

* 印表機的命令方式:從總體上來看,列印的命令方式可以分成文字、PostScript和其它種類。所謂文字,就是那些比較古老的針式印表機,我們可以直接 cat text_file > /dev/lp0,這種印表機現在已經很少使用了,在Linux上使用這類印表機是一點問題都沒有的。相信PostScript這個詞大家都是聽說過的, PS實際上是一種專門用語列印方面的指令碼語言;能夠直接支援PostScript的印表機,通常都是非常高階的辦公用印表機;PS語言是計算機和這類列印 機之間溝通的方式。再有就是現在我們經常用到的各種比較低檔的印表機,噴墨的或者鐳射的都有;它們不支援PostScript,通常都是使用廠家自己的命 令集。
* 應用程式的列印支援:Linux上的各種應用程式,都是通過輸出PostScript來描述需要列印的頁面的,而在將來,這種趨勢不會發生任何變化。
* GhostScript:對於支援PostScript的印表機而言,要支援Linux是比較容易的,但對於那些並不支援PostScript的印表機而 言,就必須要能夠把 PostScript格式的頁面描述,轉換成為這些印表機能夠識別的列印命令。而GhostScript就是用來完成這個工作的,它能夠解析 PostScript命令,並用相應的驅動來顯示它們。譬如GhostScript可以把一個PS檔案顯示在螢幕上,也可以藉助印表機廠商的驅動將PS文 件轉換成列印命令。
* PPD:PPD是用來描述印表機功能的檔案,要使用一款印表機之前,必須找到其PPD檔案,並正確地安裝到列印管理器程式上。
* 列印管理程式:作為一個多使用者多工的作業系統,Linux上的所有程式都是基於多工、多使用者而設計的,列印也不例外。為了讓不同的使用者、不同的任務在 列印的時候不會產生衝突,就需要一個列印管理程式。這類管理程式很多,從傳統的LPD,到時下非常流行的CUPS。它們功能各異,但有一點不變的就是都是 用來協調列印任務的。CUPS的工作方式如下:通過命令列接收要列印的檔案;通過檔案的型別判斷是否需要將其轉換為PostScript,如果需要,則調 用相應的應用程式進行轉換;通過PPD檔案來判斷GhostScript應使用何種驅動處理此PostScript檔案;把GhostScript處理的 結果輸出到列印裝置上。
* 把一切整合在一起:由於列印領域長時間的混亂,誕生了各種列印管理程式,而要學會為每一個列印管理程式安裝驅動,是一件痛苦的事情(僅僅學習CUPS卻是 非常愉快的)。於是就出現了 foomatic,它的作用是通過一種方式管理所有的印表機,把PPD和列印管理程式的配置遮蔽掉,給使用者一個統一的介面。

綜 上所屬,要在Linux上使用一臺印表機,首先必須確定它被支援,然後需要選擇一個列印管理程式並配置好列印驅動。最後,能否產生正確漂亮的列印 結果,則要看應用程式能否生成正確的PostScript檔案。過去,有很多程式不能正確的列印中文,主要就是因為它們不能正確的處理中文的字符集或者中 文字型。下面,我會介紹在Debian上安裝配置CUPS並進行列印的過程,並不包括foomatic。

用CUPS列印

Common Unix Printing System(CUPS)是一個出現的比較晚的列印管理程式,也正是如此,它的功能很現代,介面也非常友好。出現的晚,並不代表功能少和支援不廣泛,CUPS擁有豐富的功能,支援各種各樣的印表機,且被各種應用程式廣泛地支援。

安裝列印管理器

Debian 上的CUPS被分散在幾個軟體包中,包括庫、伺服器、客戶端等等。連線了印表機的機器需要安裝伺服器,而要提交列印任務的機器,則必須安裝客戶端。伺服器 的包是cupsys,客戶端的包是cupsys-client和cupsys-bsd,前者是CUPS自己的客戶端,後者是用來替換BSD的lpr命令 的,這樣可以讓一些比較古老的應用程式繼續通過lpr命令進行列印。

通過apt-get命令分別安裝印表機和伺服器:

# apt-get install cupsys foomatic-filters
# apt-get install cupsys-client cupsys-bsd

foomatic-filters這個軟體包對於CUPS系統來說是非常必要的,千萬別忘了。

安裝印表機驅動程式

這裡我們所說的驅動程式,包含以下三個方面:

* PPD檔案:要獲得這個檔案有很多的方法,但最簡單的就是到http://www.linuxprinting.org去下載。同一臺型號的印表機有時會 有不同的PPD檔案,譬如HP LaserJet 5000就有四個,要根據硬體的情況來選擇,譬如其中的PostScript型別就不能用於HP LaserJet 5000LE款的印表機上,因為這一款印表機去掉了PostScript模組。下載PPD檔案後,要將其複製到安裝了CUPS伺服器的計算機的 /usr/share/cups/model目錄中,然後重新啟動CUPS的伺服器。
* GhostScript驅動:GhostScript有幾個版本,其中Debian預設使用的是gs-esp。這個版本的GhostScript已經將各種Free的驅動編譯到其中。
* 其它程式:如果是用HP系列的印表機,通常會需要hpijs。不同的廠商還會提供一些用於管理其印表機的程式,譬如檢查墨盒容量等等,可根據自己的需要安裝。

新增列印裝置

安 裝好列印驅動之後,下一步的工作就是把已經完成的裝置新增到CUPS的列印裝置列表裡面。這一步可以有很多種方式,但最簡單的,就是用CUPS自 己的 Web管理介面。在安裝了CUPS伺服器的計算機上,訪問http://localhost:631/就可以了。當新增印表機時,使用者需要輸入賬號密碼, 此時可以用root賬號,但只要使用者在lpadmin這個組中,就可以管理印表機了。

新增的第一步是選擇印表機的名稱、位置、描述等,名稱是比較重要的,以後都會用到。在選擇完製造商後,就可以看到上述PPD檔案所描述的印表機資訊了,如果你找不到,可能是忘了重新啟動cupsys服務。

使用

通過Web介面,可以完成全部管理印表機的操作,包括開啟、關閉印表機,取消列印作業等等。如果要列印一個檔案,就需要藉助應用程式或者是CUPS的客戶端了。

OpenOffice

OpenOffice有自己的列印配置程式,但如果你使用了CUPS,完全沒有必要再去配置什麼,OpenOffice可以自動識別到CUPS系統中新增的印表機。

Mozilla Firefox

Mozilla Firefox在使用印表機前,需要進行簡單的設定。編輯檔案/usr/lib/mozilla-firefox/defaults/pref/unix.js,並加入如下兩行:

pref("font.FreeType2.enable", true);
pref("font.directory.truetype.1","/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType/";

在Firefox的軟體包中,上述檔案並不存在,不用擔心,加上就可以了。

Acrobat Reader

用Acrobat Reader使用印表機時,在其列印對話方塊中有Command選項,其預設值為/usr/bin/lpr,因此使用者必須安裝cupsys-bsd軟體包才行。如果列印時並非使用預設的印表機和選項,則需要在這裡進行自己設定。

gedit

在GNOME 2.8中,其列印組建gnomeprint已經比較成熟了。如果你現在仍然使用GNOME 2.8以前的版本,我建議你更新一下,這樣gedit就可以正常地列印了。

命令列

CUPS 的命令列程式有lp、lpstat和cancel,對應的BSD列印命令列工具是lpr、lpq和lprm。這些命令列程式都有很多引數, 在 CUPS的使用者手冊中有詳細的描述,在此就不贅述了。需要說明的是,當傳遞給lp的檔案不是PostScript或者PDF格式時,CUPS都要選擇一個 程式來將其轉換為這個格式,其列印效果也就不得而知了。因此,建議使用者首先想辦法生成一個PS/PDF檔案,然後再列印。

gtklp

要 記住lp的每一個選項還是一件挺麻煩的事情,gtklp是一個允許使用者在圖形介面下選擇列印選項的工具。它支援所有的CUPS選項,只要點點滑鼠 就可以列印啦。使用者選擇完畢後,它會自動呼叫lp命令的。gtklp軟體包中還有一個gtklpq程式,通過它,可以檢視和修改列印佇列。

共享

共享印表機給Linux使用者對於CUPS來說非常簡單,只需要修改/etc/cups/cupsd.conf檔案,允許其它使用者訪問/printer資源就可以了。我不知道Windows是否支援ipp協議,如果支援,也可以用這種方式列印。

常見的問題

1. 為何XX程式不能列印中文?

如上所屬,能不能列印中文,關鍵在於負責生成PostScript的程式是否能夠支援中文,很多老的命令列工具都是無法支援中文的,即便是新的軟體,也不見得能夠支援地很好。

2. 顯示時的中文粗體為何列印的時候沒有?

現在很多用xft/fontconfig的朋友都打了firefly的粗體補丁,但這個補丁僅僅是用在顯示上的。當列印時,往往是直接從字型檔中提取字形資訊,並嵌入到PostScript檔案中的,字型檔裡面是什麼樣子,打印出來就是什麼樣子。

3. 我的印表機,Linux支援的不是很好,怎麼辦?

我 有一臺Mac,還有一套正版的Windows,我打電話給微軟客服,但它們卻告訴我如果你要使用Windows,就一定要選擇跟Windows兼 容的計算機。如果你要用Linux,買硬體之前就一定要做一些簡單的調查研究,對於那些技術很差根本不懂得如何支援Linux的硬體廠商的產品,就千萬不 要買。http://www.linuxprinting.org上可以查到各種印表機和Linux的相容情況,查一下,除了相容性之外,還能知道有些打 印機為什麼會便宜,而另一些為什麼貴