在一般情況下,尤其是在低端印表機中,PostScript數據要被翻譯成印表機本地的頁面描述語言。這是通過使用一個特殊的轉換過濾器來完成的。一般而言,一個過濾器實際上就是一個特殊的程序,它可以處理輸入的數據,並且輸出經過加工的數據。現在,Linux列印系統中使用著各種不同的過濾器:轉換過濾器、I/O過程器(負責將數據傳送至設備)、處理過濾器(轉換文檔數據)。列印系統的基礎是一個假離線程序(Spooler)。它可以管理列印任務隊列,而一個隊列通常和一個印表機相關聯,並且用戶提交的任務都是按照先進先出的原則來處理的。當一個列印任務被處理時,任務中的數據在送達印表機前一般都要通過一定數量的過濾器。
使用PostScript頁面描述語言進行列印的優點是極大的簡化的設計,不用像Windows系統一樣安裝各種印表機驅動程序。但是它的缺點是許多印表機(特別是低端印表機)不能解析PostScript輸出,Linux系統對此的解決方法是從印表機隊列調用Ghostscript(http://www.ghostscript.com )軟體包支持你的印表機。要查看Ghostscript在你的Linux發行版本上支持什麼印表機列表,可以在命令行下鍵入:
$gs --help |
gs命令會列出一份它支持的印表機和輸出設備的名單。gs命令使用-r選項設置列印解析度。調整ghostscript的輸出結果,假如gs 的輸出不能讓人滿意,還有一些辦法::輸出的位置及大小。位置,大小,還有圖像在頁面上的視覺比例是由ghostscript中的印表機驅動程序所控制的. 如果你發現列印出來太短, 太長或是大了兩倍, 你可能會想要看一下驅動程序的原始模組並且調整任何所能想到的參數。
一代的BSD LPD列印系統,這個列印系統源自於伯克利的Unix發行版,BSD LPD是用於Linux發行版(比如Slackware)的第一個列印系統。現在仍然有發行版(Debian、Slackware)還會帶有這種假離線列印程序。BSD列印系統核心的功能僅限於隊列任務。它由一個後台程序(lpd)及一些位於/etc目錄下的配置文件組成,在這些配置文件中有著隊列和屬性的一些定義。在相應的目錄下,還有一系列基本的用於提交、刪除和處理任務使用的命令(lpd、lprm、lpc)。BSD LPR是BSD列印系統重要一個部分,因為它定義了LPD網路協議,而該協議是用於提交任務至遠程LPD後台程序的,並且它允許Unix工作站實現一個列印伺服器的功能。現在,所有的網路印表機都支持這個協議。由於它使用範圍非常廣泛,所有其它列印系統都要求至少可以和其它的LPD後台程序進行會話。 下面是如何在printcap文件中定義一個遠程隊列的例子。在這個例子中,任務將會被即時傳送至遠程監控程序的隊列之中,並且不會在本地機進行處理。
remote: :sd=/var/spool/lpd/remote: :rm=printserver.domain.tld: :rp=queue: :mx#0: |
LPD協議傳送數據被分成兩個部分。首先會生成一個描述任務的控制文件,並且傳送該文件。該控制文件包含有源用戶、文件名和所有與工作相關的信息。接著就會傳送數據文件,它的格式完全取決於目前正在使用的列印語言。
第二個使用較廣、較有影響力的基於BSD的列印系統是LPRng(LPR Next Generation),該系統實際上重寫了原來的BSD LPR系統,但原有概念都保留了下來。保留了printcap文件的格式,但是它還引入了一些新的屬性以使配置過程更加靈活。過濾器定義可以被獨立出來,並且還可以定義真正的I/O過濾器。用戶也可以通過在本地機主目錄下編寫printcap文件來定義自己的隊列。LPRng列印系統的優點:1、不需資料庫環境就可以執行lpr lpc lprm命令。2、列印隊列可以自動轉向。3、列印工作可以自動保留。4、多重印表機可以使用同一列印隊列。5、客戶端不需這些SUID root。6、可以大幅度提高安全性檢查。7、可以使用Printconf工具維護配置文件(/etc/printcap)。LPRng還提供了模擬Unix System V風格的列印命令(lp、lpstat等)。隨LPRng發行的還有IFHP過濾器,它可以用在隊列中,用於自動轉換一些數據格式(比如列印ASCⅡ文本或圖像)。
通用Unix列印系統(CUPS) 是比較新的列印系統。CUPS 軟體為 Unix/Linux 用戶提供了以有效而可靠的方式來管理列印的方法。它生來就支持 IPP(網際網路列印協議),IPP協議的四個主要目的是:1、幫助用戶尋找為了上可用的印表機。2、 傳送列印作業。3、傳送印表機狀態信息。4、取消列印作業。並有 LPD、SMB(伺服器消息塊,例如與 Microsoft Windows 連接的印表機)和 JetDirect 介面。CUPS採用的另外一個標準是PPD(PostScript Printer Definition)文件格式,這是Adobe另外一個用於PostScript印表機的標準。從以上可以看出CUPS列印系統是目前Linux列印系統中最好的選擇,從Red hat Linux 9.0開始它取代了LPRng成為Linux預設安裝的Linux列印系統。Linux支持許多種類的印表機,從老式的針式印表機,到最新的激光印表機,都可以使用。了解目前Linux 支持什麼列印系統非常重要,下面我們看看幾個主流Linux發行版本使用的列印系統。CUPS還採用了很多過濾器用於傳送數據至印表機的方法。與BSD類的假離線程序不同的是,這是通過一種更加智能的方式來完成的。下面是在CUPS中可用的部分過濾器:
1.後端過濾器。它可以提供最終數據進行傳送的端點。這些過濾器可用於並口、TCP/IP套接字連接、LPD和其它端點的連接。
2.文檔轉換過濾器。該過濾器是作為CUPS一個標準配置一起發行的。它可以轉換圖像、ASCⅡ文本、PDF文件和HP-GL/2矢量文檔至PostScript。
3.介面過濾器。它可以將文檔從PostScript轉換至其它過渡的文件格式。
表-1 主流Linux發行版本使用的列印系統
發行版本和產品序列號 | 默認安裝列印系統 | 可以兼容列印系統 |
RedHat Enterprise Linux 4.0 | CUPS | LPRng |
CentOS 4.2 | CUPS | LPRng |
Mandrake Linux LE2005 | CUPS | LPRng |
Debian GNU/Linux 3.1r0 | BSD LPD | CUPS, LPRng |
Slackware Linux 10.2 | LPRng | 無 |
SuSE Linux 9.3 | CUPS | 無 |
Turbo Linux 10F | CUPS | 無 |
Gentoo 2005.0 | CUPS | 無 |
CUPS是跨桌面的,也就是說你可以在GNOME或KDE下安裝你的印表機工作。CUPS主要功能:
Print 將文件發送到特定的URI的印表機; Validate 設定列印優先順序別
Creat 將文件作為列印作業處理; Cancal 取消列印作業
Pause 暫停列印作業;Resume 恢複列印作業
Purge 清除列印作業
下面我們看如何為你的Linux系統配置列印系統。以Red Hat Enterprise Linux 4.0。為例。
二、印表機驅動程序查詢和安裝
一般來說我們購買的普通印表機附帶的光碟中沒有Linux的驅動,如果我們不知道是否可以在Linux下使用。這時可以查看:http://www.linuxprinting.org/ 站點,這裡包含了大量關於在 Linux 上列印的信息。點擊網頁右列的:Printer Listings。進入查詢界面后輸入印表機廠商和型號后,即可進行查詢。通常會得到四個查詢結果:
1、perfectly(完全支持Linux下列印,並且可以使用印表機所有功能和列印解析度)。
2、mostly(大部分功能支持Linux下列印,有一些小缺陷)。
3、partially(只有一部分功能支持Linux下列印,許多功能不能實現例如彩色印表機只能列印黑白圖像)
4、paperweight(完全不支持Linux下列印)。筆者使用的是HP 的designjet430Cannon查詢結果截圖如下:
圖1 印表機查詢結果
HP designjet430查詢結果是:perfectly ,有三個企鵝標誌。經過測試列印圖像時能達到硬體的最大解析度:1440*1440 dpi。 http://www.linuxprinting.org/ 網站提供的驅動程序的後綴是.PPR文件,最簡單的安裝方法是使用系統提供的印表機管理工具,雙擊「添加印表機」在選擇驅動程序時指向下載的PPR文件即可。
三、配置CUPS列印系統
如果系統是從以前的使用 LPRng列印系統 的 Red Hat Linux版本升級而來的,升級過程不會使用 CUPS 來替代 LPRng;系統仍會繼續使用 LPRng。要使用CUPS首先需要停止原來的列印守護進程,啟動CUPS服務一共分成3個步驟:
1、停止原來的列印守護進程:
# chkconfig ?level 2345 lpd off |
2、啟動CUPS守護進程:
# chkconfig ?level 2345 cups on |
3、切換列印系統,運行命令:
# redhat-switch-printer |
切換界面見圖-2(另外如果需要恢復使用LPRng列印系統, 以上過程是可逆的。
圖-2切換CUPS和LPRng列印系統
四、管理CUPS列印系統:
管理CUPS列印系統可以有兩種方法:編輯/etc/cups/cups.conf(CUPS 印表機守護進程配置文件);使用Web管理界面。cups.conf配置文件和Apache 的複雜的 /etc/httpd.conf 相似。一個典型的cups.conf配置文件內容是:
Order Deny,Allow Deny From All Allow From 127.0.0.1 AuthType None Order Deny,Allow Deny From All Allow From 127.0.0.1#允許從本地配置 Browsing On BrowseProtocols cups BrowseOrder Deny,Allow BrowseAllow from @LOCAL Listen 127.0.0.1:631#印表機監聽埠 |
除了主配置文件Cups.conf外,目錄下還有classes.conf — CUPS 類別配置文件,它負責指向不同的列印組。client.conf -客戶端配置文件,指向默認CUPS伺服器,可以指定加密要求。mine.cons-列出不同文件格式的過濾器,如圖像和文本。 mine.types-列出CUPS印表機可以處理的文件類型。 print.conf-CUPS Web工具改變的配置文件。 pstoraster.cons -包含Ghostscript文件的過濾器。GUN通過這種方法處理PostScript印表機。如果你感到命令行文件比較複雜,可以使用Web管理CUPS列印系統:
1.使用命令檢查印表機相關RPM包:
#rpm ?qa |grep cups;rpm -qa|grep foo cups-libs-1.1.17-13 #CUPS命令集 cups-devel-1.1.17-13 #CUPS開發庫 cups-1.1.17-13 #CUPS主程序 foomatic-2.0.2-15 #獨立於假離線列印的資料庫 Omni-foomatic-0.7.2-4 #Omni資料庫 |
2.通過瀏覽器直接連接到CUPS的Web控制界面:http://localhost:631/ ,出於安全此時要輸入賬號名稱和口令,見圖-3.
圖-3 CUPS列印系統Web管理頁面
3.CUPS列印系統Web管理表
名稱 | 說明 |
ESP | 導航到CUPS開發者站點:http://www.easysw.com/ 。 |
Administration: Do Administration Task | 管理、增加印表機、類、列印作業。 |
Classes :Manage Printer Class | 通過類的方式管理印表機組。 |
Help : On-Line Help | CUPS管理手冊和幫助。 |
Jobs : Manage Jobs | 用來管理列印隊列中的列印任務。 |
Printer : Manage Printers | 管理、增加印表機 |
Software:Download the Current CUPS Software | 下載軟體最新版本 |
4、增加一個印表機
在該頁面中有多個選項。點擊第一個選項"Do Administration Tasks"(管理任務選項),這時程序會提示你登錄,用戶名必須以root身份登錄並且輸入超級用戶密碼。若要增加一個印表機,點擊"Add Printer"按鈕,出現的頁面會提示用戶填寫下列信息:
Name:印表機的名字。
Loaction:連接印表機的主機名。
Description:對印表機的簡短描述。
填寫完以上信息后,點擊"Continue"鍵。接下來的頁面詢問印表機當前使用什麼類型的設備。唯一的選項是:Disk File。所以用戶只要選擇"Continue"就可以了。接著用戶要提供設備的URI。包括: http://hostname:631/ipp/port1
ipp://hostname/ipp/port1
ipd://hostname/queue
當上面的信息都填寫完畢后,系統會發送一條印表機已經正確加入的消息。在印表機正確加入后,點擊"Administration"管理印表機:(見圖-4)。
圖-4 管理印表機的Web界面
在該頁面提供的操作包括測試印表機、啟動印表機及其它管理任務。它同時顯示列印任務及印表機的狀態。
五、使用Redhat Linux自己的配置管理工具
Redhat Linux 8.0以後的版本都內置自己的配置管理工具既能夠配置 CUPS,也能夠配置 LPRng 列印系統。根據你的系統配置而定,它會配置活躍的列印系統。要使用 印表機配置工具,你必須具備根特權。要啟動這個應用程序,選擇「主選單」-「系統設置」-「列印」,或鍵入 「redhat-config-printer」 命令。該命令會根據它所執行的環境是圖形化 X 窗口系統還是基於文本的控制台來自動判定它應該以圖形化還是文本形式來運行程序。配置界面見圖-5。
圖-5 使用系統配置工具添加本地印表機
如果你沒有安裝 圖形界面可以在命令行添加,運行命令:
#redhat-config-printer-tui --Xadd-local options |
--device=node :要使用的設備節點。例如:/dev/lp0。
--make=make :IEEE 1284 MANUFACTURER 字元串或 foomatic 資料庫中的印表機生產廠商的名稱(若無 manufacturer 字元串)。
--model=model :IEEE 1284 MODEL 字元串或 foomatic 資料庫中列出的印表機型號(若無 model 字元串)。
六、配置管理網路印表機
如果你的本地印表機不能被Linux支持或者列印效果太差,可以使用配置網路印表機。RHEL 4.0一共可以配置六種類型的列印隊列:
1、本地連接 — 直接通過并行或 USB 埠連接到計算機上的印表機。
2、聯網的 CUPS (IPP) — 連接到能夠通過 TCP/IP 網路、使用互聯網列印協議進入的印表機,又稱 IPP(例如,連接到網路上另一個運行 CUPS 的 Red Hat Linux 系統的印表機)。需要輸入印表機所連接的遠程機器的主機名或 IP 地址和到遠程機器上的列印隊列的路徑。
3、聯網的 UNIX (LPD) — 連接到能夠通過 TCP/IP 網路進入的其它 UNIX 系統上的印表機(例如,連接到網路上另一個運行 LPD 的 Red Hat Linux 系統的印表機)。 需要添加印表機所連接的遠程機器的主機名或 IP 地址,遠程印表機隊列。默認印表機隊列通常是 lp。
4、聯網的 Windows (SMB) — 連接到通過 SMB 網路來共享印表機的其它系統上的印表機。需要添加共享印表機的 Samba 工作組的名稱,共享印表機的伺服器的名稱。你想用來列印的共享印表機的名稱。這個名稱必須和遠程 Windows 機器上定義的 Samba 印表機的名稱相同。在「用戶名」欄位中指定的用戶的口令,你要訪問印表機所必須登錄使用的用戶名稱。用戶在 Windows 系統上必須存在,並且必須有訪問印表機的許可權。默認的用戶名典型為guest(Windows 伺服器)或 nobody(Samba 伺服器)。
5、聯網的 Novell (NCP) — 連接到使用 Novell NetWare 網路技術的其它系統上的印表機。 需要添加印表機所連接的 NCP 系統的主機名或 IP 地址。NCP 系統上的印表機的遠程隊列。你要使用印表機所必須登錄的用戶名。 為以上用戶欄位指定的口令。
6、聯網的 JetDirect — 通過 HP JetDirect 直接連接到網路印表機。 JetDirect 印表機的主機名或 IP 地址。 JetDirect 印表機監聽列印作業的埠。默認埠為 9100。
管理列印作業
當你給印表機守護進程發送列印作業時(例如從 Emacs 中列印文本文件或從 The GIMP 中列印圖像),這個列印作業被添加到列印假離線隊列中。列印假離線隊列是一個被發送給印表機的列印作業以及關於每個列印請求的信息的列表。這些信息包括列印請求的狀態、發送請求的用戶名、發送請求的系統主機名、作業號碼等等。 要改變印表機設置,右擊印表機圖標,然後選擇「屬性」。印表機配置工具就會被啟動。 雙擊一個已配置的印表機來查看列印假離線,見圖-6。
圖 6 列印作業列表
要取消在 GNOME 列印管理器中列出的某一作業,從列表中選擇它,然後選擇編輯-取消文檔。如果列印假離線中有活躍的列印作業,印表機通知圖標可能會出現在桌面面板上的面板通知區域,
七、印表機管理常用命令
在Linux中是把硬體設備當作文件來管理。每個與Linux系統相連的實際設備(包括光碟驅動器、顯示器、網卡、顯示卡、掃描儀和印表機等),都可以在文件系統中表示出來。Linux系統把每一個設備都看成一個文件,與普通文件一樣處理,這樣可以使文件與設備的操作儘可能統一。從用戶的角度來看,對設備的使用和一般文件的使用一樣。Linux提供了大量的命令,利用命令可以有效管理設備。所以,在Linux系統上使用印表機,離不開使用系統提供的命令。要想真正理解Linux系統列印,就必須從Linux列印命令學起。不管你是在 GUI 中點擊一個按鈕還是從命令行中鍵入命令,列印都不能算是一項很互動化的進程。下面將會向你介紹印相關命令。
1.CUPS列印系統命令見表4。
表4 CUPS列印系統命令
命令名稱 | 功能說明 |
lp.cups | 提交列印任務,即開始列印。 |
lpr.cups | 印表機請求命令。 |
lprm.cups | 從列印隊列刪除任務。 |
lpq.cups | 查詢列印隊中的任務。 |
lpc.cups | 行列印控制命令。 |
lpstat,.cups | 顯示印表機狀態,包括列印隊列長度和印表機數量。 |
lpoptions | 顯示或設置列印選項。 |
lppasswd | 為用戶修改列印密碼。 |
lpinfo | 顯示列印設備。 |
lpadmin | 配置印表機。 |
cancel | 取消一個列印任務。 |
disabe | 禁止一個列印任務。 |
enable | 啟動一個列印任務。 |
lpmove | 改變列印任務到新隊列。 |
accept | 接受列印任務。 |
reject | 拒絕列印任務。 |
2.LPD列印命令
Red Hat Linux現在默認打伺服器是CUPS。但是許多Linux老用戶仍然傾向使用行列印監控程序(LPD)。LPD包括四個主要命令:行印表機請求(Line Printer Request ,lpr)、行印表機控制(Line Printer Control,lpc)、行印表機查詢(Line Printer Query,lpq)、行印表機刪除(Line Printer Remove,lprm)。LPD列印系統命令見表5。
表5 LPD列印系統命令
命令名稱 | 功能名稱 | 常用選項 |
lpr | 印表機請求 | -h file:列印沒有作業控制頁的文件,通常包含用戶賬號和源計算機的主機名。作業控制頁也稱為粹發頁。 -Pother file:用/etc/printcap文件定義的印表機other列印文件file。注意:P和印表機之間沒有空格。 -s fike:生產列印文件file的符號鏈接。
|
lpq | 提供當前列印隊列 | lpq ;返回默認印表機的當前列印隊列,在/etc/printcap文件中定義。 lpq -P printer :返回指定印表機的當前列印隊列,使用/etc/printcap文件中定義的名稱。
|
lprm | 列印隊列刪除任務 | -P: 刪除默認印表機的當前列印隊列,在/etc/printcap文件中定義。
|
Lpc | 可以控制每台印表機的幾個特徵 | lpc [-P] [device][enable| disable|starp|stop|stataus] lpc -P device stataus:顯示印表機的狀態。輸出顯示能否將列印作業發送到隊列、隊列中的作業號、印表機是否接收作業以及和印表機的通信狀態。 lpc disable:禁止對默認印表機將發送(假離線)到列印隊列。 lpc enable:啟動對默認印表機將發送(假離線)到列印隊列。與lpc disable命令相反。 lpc start:從訂印隊列重新開始傳輸。 lpc stop:停止印表機與列印隊列之間的通信。 |
八、重要聯機資料
要了解更多關於在 Red Hat Linux 上列印的信息,請參考下列資料。
man printcap — /etc/printcap 印表機配置文件的說明書頁。
map lpr — 允許你從命令行列印文件的 lpr 命令的說明書頁。
man lpd — LPRng 印表機守護進程的說明書頁。
man lprm — 用來從 LPRng 假離線隊列中刪除列印作業的命令行工具的說明書頁。
man mpage — 用來在一張紙上列印多頁的命令行工具的說明書頁。
man cupsd — CUPS 印表機守護進程的說明書頁。
man cupsd.conf — CUPS 印表機守護進程配置文件的說明書頁。
man classes.conf — CUPS 類別配置文件的說明書頁。
總結:以上介紹了Linux印表機配置的方法,與以前相比,隨著更多、更高級列印系統的出現,情況已有了很大改觀,也得到了HP、IBM等公司的關注,它們也努力致力於推進這個基礎架構發展。FSG(自由標準組織)正在進行著一個名為OpenPrinting的項目。據稱該項目是為Linux定義下一代列印系統的基礎架構,目前其聚集了很多業內的專家。以提升Linux競爭者力。
[火星人 ] Linux操作系統印表機配置全攻略已經有997次圍觀