章 12. 印表機操作

目錄

12.1. 列印系統的工作流程
12.2. 連接印表機的方法和通訊協定
12.3. 安裝軟體
12.4. 網路印表機
12.5. 由指令行開始列印
12.6. 中的特殊功能SUSE Linux Enterprise Desktop
12.7. 疑難排解

SUSE® Linux Enterprise Desktop 可支援以多種類型的印表機進行列印,包括遠端網路印表機。您可以手動設定印表機,也可以使用 YaST。如需組態設定指示,請參閱第 5.5 節「Setting Up a Printer」 (第 5 章「Setting Up Hardware Components with YaST」, ↑部署指南)。圖形和指令行公用程式都可用來啟動和管理列印工作。如果您的印表機無法如預期般運作,請參閱第 12.7 節「疑難排解」

CUPS (Common Unix Printing System,通用 UNIX 列印系統) 是 SUSE Linux Enterprise Desktop 中的標準列印系統。

印表機可藉由介面 (例如 USB 或網路) 和印表機語言加以區分。購買印表機時,請確定印表機的介面 (例如 USB 或平行埠) 是否也可在您的硬體上找到,並請確定印表機的語言符合所需。印表機可根據下列三種印表機語言來分類:

PostScript 印表機

Linux 和 Unix 內部列印系統以 PostScript 印表機語言產生和處理大部分列印工作。如果印表機可直接處理 PostScript 文件,且不需轉換到列印系統中其他階段,潛在錯誤來源的次數便會減少。

標準印表機 (PCL 和 ESC/P 語言)

雖然這些印表機語言很舊,它們仍在擴充以處理印表機的新功能。如果已知印表機語言,列印系統可以藉由 Ghostscript 的協助,將 PostScript 工作轉換為對應的印表機語言。此處理階段稱為解譯。最知名的語言是大多數 HP 印表機與類似產品使用的 PCL,以及 Epson 印表機使用的 ESC/P。這些印表機語言通常都受 Linux 支援,並可產生不錯的列印效果。Linux 可能無法提供一些特殊的印表機功能。除了 HP 所開發的 HPLIP (HP Linux Imaging and Printing,HP Linux 成像與列印) 之外,目前沒有印表機製造商在開發 Linux 驅動程式以及以開放原始碼授權的方式將驅動程式提供給 Linux 散發者。

專屬印表機 (也稱為 GDI 印表機)

這些印表機並不支援任何一般的印表機語言。它們使用自己的印表機語言,而當有新型號發行,那些語言也可能有所變更。這些印表機通常指有 Windows 驅動程式。如需相關資訊,請參閱第 12.7.1 節「沒有標準印表機語言模式支援的印表機」

在購買新印表機之前,請參考下列來源以檢查您想要購買的印表機之支援性:

http://www.linuxfoundation.org/OpenPrinting/

OpenPrinting 首頁,含印表機資料庫。資料庫會顯示最新的 Linux 支援狀態。但是,Linux 版本僅可與生產期間可用的驅動程式整合。因此,目前被評選為「完全支援」的印表機,在最新的 SUSE Linux Enterprise Desktop 版本發行之後,可能就將失去此稱號。因此,資料庫不一定能指出正確狀態,而僅提供估計值。

http://pages.cs.wisc.edu/~ghost/

Ghostscript 網頁。

/usr/share/doc/packages/ghostscript-library/catalog.devices

所含驅動程式的清單。

12.1. 列印系統的工作流程

使用者會建立列印工作。列印工作包含要列印的資料和線上同時週邊作業器的資訊 (例如印表機的名稱或是印表機佇列的名稱),另外還可以包含過濾器資訊 (例如印表機的特定選項)。

每一台印表機都至少有一個專屬的印表機佇列。暫存序列器會在佇列中列印工作,直到所需的印表機已準備好接收資料。當印表機備妥時,暫存序列器會透過過濾器與後端,傳送資料至印表機。

過濾器會將列印應用程式所產生的資料 (通常為 PostScript 或 PDF,但也會有 ASCII、JPEG 等) 轉換為印表機特定資料 (PostScript、PCL、ESC/P 等)。印表機的特性描述在 PPD 檔案中。PPD 檔案含有印表機特定選項以及在印表機上啟用它們所需的參數。過濾器系統可確保啟用使用者所選取的選項。

如果您是使用 PostScript 印表機,過濾器系統會將資料轉換為印表機特定的 PostScript。這並不需要印表機驅動程式。如果您使用非 PostScript 印表機,過濾器系統會將資料轉換為印表機特定資料。這將需要印表機適用的印表機驅動程式。後端會從過濾器接收印表機特定的資料,然後將它傳送至印表機。

12.2. 連接印表機的方法和通訊協定

有各種方法可將印表機連接到系統。CUPS 列印系統的組態無法辨識本地印表機和透過網路連接到系統的印表機。

[Warning]在執行中的系統變更纜線連接

在將印表機連接到機器時,請不要忘記只有 USB 設備可在操作中插上和拔除。若要避免損壞您的系統或印表機,請先關機再變更任何非 USB 的連接。

12.3. 安裝軟體

PPD (PostScript 印表機描述) 為描述內容 (如解析度) 和選項 (如雙面列印模組的可用性) 的電腦語言。這些描述是使用 CUPS 中各種印表機選項所需。沒有 PPD 檔案,列印資料會被轉送給處於 raw 狀態的印表機,這通常不是想要的狀態。在安裝 SUSE Linux Enterprise Desktop 時,會預先安裝很多 PPD 檔案。

若要設定 PostScript 印表機,最好的方法是取得適當的 PPD 檔。在標準安裝範圍中自動安裝的套件 manufacturer-PPDs 提供許多 PPD 檔案。請參閱第 12.6.2 節「各種套件中的 PPD 檔案」第 12.7.2 節「PostScript 印表機沒有可用的 PPD 檔案」

新的 PPD 檔案可儲存在 /usr/share/cups/model/ 目錄中,或依照第 5.5.1.1 節「Adding Drivers with YaST」 (第 5 章「Setting Up Hardware Components with YaST」, ↑部署指南) 中所述透過 YaST 新增到列印系統中。之後,便可在印表機設定期間選取該 PPD 檔案。

如果印表機製造商要求您安裝整個軟體套件,請謹慎處理。首先,這種安裝可能會導致 SUSE Linux Enterprise Desktop 無法提供支援,其次,列印指令的運作方式可能不同,並且系統可能再也無法處理其他製造商的設備。基於此原因,不建議安裝製造商軟體。

12.4. 網路印表機

網路印表機可支援各種通訊協定,有些甚至可同時支援。雖然大部分受支援的通訊協定已標準化,但有一些製造商還是會修改標準。這樣,製造商只會針對一部分作業系統提供驅動程式。不幸地,他們很少提供 Linux 驅動程式。目前的情況是,您無法以每一個通訊協定均能在 Linux 中順暢執行的假設來行事。因此,您必須試驗各種選項以達到功能性組態。

CUPS 支援 socketLPDIPPsmb 通訊協定。

socket

socket 指將純文字列印資料直接傳送到 TCP 通訊端的連線。經常使用的 socket 連接埠號碼為 910035。設備 URI (資源識別字串) 的語法為 socket://印表機的 IP:連接埠,例如 socket://192.168.2.202:9100/

LPD (行列式印表機精靈,Line Printer Daemon)

RFC 1179 中有對 LPD 通訊協定的詳細介紹。在此通訊協定下,部分工作相關資料 (如印表機佇列的 ID) 會先於傳送實際列印資料傳送。因此,在設定 LPD 通訊協定時,必須指定印表機佇列。不同印表機製造商的執行具有足夠彈性接受任何名稱做為印表機佇列。如有需要,印表機手冊應該會指出要使用的名稱。通常使用 LPT、LPT1、LP1 或類似名稱。LPD 服務的連接埠號碼為 515。某個設備 URI 的範例為 lpd://192.168.2.202/LPT1

IPP (網際網路列印通訊協定,Internet Printing Protocol)

IPP 是相對較新的通訊協定 (1999 年),它以 HTTP 通訊協定為基礎。有了 IPP,可比使用其他通訊協定傳輸更多工作相關資料。CUPS 使用 IPP 進行內部資料傳輸。正確設定 IPP 必須要有列印佇列的名稱。IPP 的連接埠號碼為 631。設備 URI 的範例為 ipp://192.168.2.202/psipp://192.168.2.202/printers/ps

SMB (Windows 共享)

CUPS 也支援在連接到 Windows 共享的印表機上列印。此用途使用的通訊協定為 SMB。SMB 使用的埠號有 137138139。設備 URI 的範例為 smb://user:password@workgroup/smb.example.com/printersmb://user:password@smb.example.com/printersmb://smb.example.com/printer

必須在設定組態之前決定印表機支援的通訊協定。如果製造商未提供所需資訊,可使用 nmap 指令 (隨附於 nmap 套件) 來確定通訊協定。nmap 會檢查主機上是否有開啟的連接埠。例如︰

nmap -p 35,137-139,515,631,9100-10000 printerIP

12.4.1. 以指令行工具設定 CUPS

CUPS 可透過 lpinfolpadminlpoptions 等指令行工具來設定。您需要包含後端 (如並列和參數) 的設備 URI。若要判斷系統中的設備 URI 是否有效,請使用以下 lpinfo -v | grep ":/" 指令︰

# lpinfo -v | grep ":/"
direct usb://ACME/FunPrinter%20XL
direct parallel:/dev/lp0

使用 lpadmin,CUPS 伺服器管理員可新增、移除或管理列印佇列。若要新增印表機佇列,請使用下列語法:

lpadmin -p queue -v device-URI -P PPD-file -E

然後設備 (-v) 會變為可用 queue (-P),使用指定的 PPD 檔案 (-P)。這表示如果要手動設定印表機,您必須知道 PPD 檔案以及設備 URI。

請勿使用 -E 做為第一選項。對於所有 CUPS 指令,第一個引數 -E 設定使用加密連接。若要啟用印表機,必須依照下列範例所示使用 -E

lpadmin -p ps -v parallel:/dev/lp0 -P \
/usr/share/cups/model/Postscript.ppd.gz -E

下列範例是設定網路印表機:

lpadmin -p ps -v socket://192.168.2.202:9100/ -P \
/usr/share/cups/model/Postscript-level1.ppd.gz -E

如需 lpadmin 的更多選項,請參閱 lpadmin(8) 的 man 頁面。

在印表機設定期間,某些選項會設成預設。可針對每一個列印工作修改這些選項 (視所使用的列印工具而定)。也可以使用 YaST 變更這些預設選項。使用指令行工具,可依下列方式設定預設選項:

  1. 首先,列出所有選項:

    lpoptions -p queue -l

    範例︰

    Resolution/Output Resolution: 150dpi *300dpi 600dpi

    啟用的預設選項前面會加上星號 (*),用以識別。

  2. lpadmin 變更選項:

    lpadmin -p queue -o Resolution=600dpi
  3. 檢查新設定:

    lpoptions -p queue -l
    
    Resolution/Output Resolution: 150dpi 300dpi *600dpi

當一般使用者執行 lpoptions 時,設定會寫入 ~/.cups/lpoptions。然而,root 設定會會寫至 /etc/cups/lpoptions

12.5. 由指令行開始列印

若要由指令行進行列印,請輸入 lp -d 佇列名稱 檔案名稱;請以相對應的名稱來取代佇列名稱檔案名稱

有些應用程式有賴 lp 指令來進行列印。在此情況下,請在應用程式列印對話方塊中 (通常並未指定檔案名稱) 輸入正確的指令,例如 lp -d 佇列名稱

12.6. SUSE Linux Enterprise Desktop 中的特殊功能

CUPS 的許多功能已經可適用於 SUSE Linux Enterprise Desktop。此處涵蓋部份最重要的變更。

12.6.1. CUPS 與防火牆

執行 SUSE Linux Enterprise Desktop 的預設安裝後,SuSEFirewall2 即會啟用,且網路介面會設定為處於「外部區域」中,這會阻擋內送流量。如需 SuSEFirewall2 組態的詳細資訊,請參閱第 15.4 節「SuSEfirewall2」 (第 15 章「Masquerading and Firewalls」, ↑Security Guide)。

12.6.1.1. CUPS 用戶端

CUPS 用戶端通常在位於防火牆之後的受信任網路環境中的一般工作站上執行。在此情況下,建議將網路介面設定為處於「內部區域」中,以便可從該網路中存取工作站。

12.6.1.2. CUPS 伺服器

如果 CUPS 伺服器位於受防火牆保護的受信任網路環境中,則應將網路介面設定為處於防火牆的「內部區域」中。建議您在受信任的網路環境中設定 CUPS 伺服器,否則請留心使用特殊防火牆規則與 CUPS 組態中的安全性設定加以保護。

12.6.2. 各種套件中的 PPD 檔案

YaST 印表機組態使用安裝於 /usr/share/cups/model/ 中的 PPD 檔案來設定 CUPS 的佇列。為了尋找適合印表機型號的 PPD 檔案,YaST 會對照硬體偵測期間確定的廠商和型號比較所有 PPD 檔案內的廠商和型號。基於此原因,YaST 印表機組態將從 PPD 檔案中取出的廠商和型號資訊產生資料庫。

僅使用 PPD 檔案且不使用其他資訊來源的組態,好處在於 /usr/share/cups/model/ 中的 PPD 檔案可自由修改。例如,如果您只有 PostScript 印表機,通常不需要 cups-drivers 套件中的 Foomatic PPD 檔案,或 gutenprint 套件中的 Gutenprint PPD 檔案。您可以直接將 PostScript 印表機的 PPD 檔案複製到 /usr/share/cups/model/ (如果在 manufacturer-PPDs 套件中尚未存在),以達到印表機的最佳組態。

12.6.2.1. cups 套件中的 CUPS PPD 檔案

cups 套件中的一般 PPD 檔案已經以 PostScript Level 1 和 Level 2 印表機適當的 Foomatic PPD 檔案補充。

  • /usr/share/cups/model/Postscript-level1.ppd.gz

  • /usr/share/cups/model/Postscript-level2.ppd.gz

12.6.2.2. cups-drivers 套件中的 PPD 檔案

一般情況下,Foomatic 印表機過濾器 foomatic-rip 會與非 PostScript 印表機的 Ghostscript 搭配使用。適當的 Foomatic PPD 檔案有 *NickName: ... Foomatic/Ghostscript driver*cupsFilter: ... foomatic-rip 的項目。這些 PPD 檔案位於 cups-drivers 套件中。

YaST 通常偏好 manufacturer-PPD 檔案。但如果沒有適合的 manufacturer-PPD 檔案,將會選取包含項目 *NickName: ... Foomatic ... (推薦) 的 Foomatic PPD 檔案。

12.6.2.3. gutenprint 套件中的 Gutenprint PPD 檔案

除了 foomatic-rip 之外,來自 Gutenprint (以前稱為 GIMP-Print) 的 CUPS 過濾器 rastertogutenprint 也可以用於許多非 PostScript 印表機。此過濾器和適合的 Gutenprint PPD 檔案可在 gutenprint 套件中找到。Gutenprint PPD 檔案位於 /usr/share/cups/model/gutenprint/ 中,並含有項目 *NickName: ... CUPS+Gutenprint*cupsFilter: ... rastertogutenprint

12.6.2.4. 位於 manufacturer-PPDs 套件中印表機製造廠商的 PPD 檔案

manufacturer-PPDs 套件包含具有充分自由授權的印表機製造廠商所發行的 PPD 檔案。PostScript 印表機應該以印表機製造廠商的適合 PPD 檔案來設定,因為有此檔案才可使用 PostScript 印表機的所有功能。YaST 偏好來自 manufacturer-PPDs 的 PPD 檔案。如果型號名稱不符,YaST 就無法使用 manufacturer-PPDs 套件中的 PPD 檔案。如果對於類似型號 (如 Funprinter 12xx 系列),manufacturer-PPDs 套件僅包含一個 PPD 檔案,則可能出現此情況。在此情況下,請手動分別選取 YaST 中的 PPD 檔案。

12.7. 疑難排解

下列章節涵蓋印表機硬體和軟體最常遭遇的問題,以及解決或避免這些問題的方式。涵蓋的主題包括 GDI 印表機、PPD 檔案和連接埠組態,並討論了一般網路印表機問題、列印瑕疵、佇列處理。

12.7.1. 沒有標準印表機語言模式支援的印表機

這些印表機不支援任何的一般印表機語言,且只有特殊的專屬控制序列才能處理。因此它們僅可在製造廠商針對其開發驅動程式的作業系統版本上使用。GDI 是 Microsoft* 為繪圖設備所開發的程式設計介面。製造廠商通常只提供 Windows 適用的驅動程式,而由於 Windows 驅動程式使用 GDI 介面,因此這些印表機也稱為 GDI 印表機。實際問題不在於程式設計介面,而是這些印表機僅可使用對應印表機型號的專用印表機語言處理。

部分 GDI 印表機可切換到 GDI 模式或某種標準印表機語言來操作。如果手邊有印表機手冊,可以參閱其中內容。某些型號需要特殊的 Windows 軟體才能進行切換 (請注意,從 Windows 列印時,Windows 印表機驅動程式可能都會將印表機切換回 GDI 模式)。對於其他 GDI 印表機,則可以使用標準印表機語言的延伸模組。

部分製造廠商提供其 印表機的專用驅動程式。專用印表機驅動程式的壞處在於,其不保證可與安裝的列印系統搭配使用,也不保證適用於各種硬體平台。相反的,支援標準印表機語言的印表機不需依賴特殊的列印系統版本或特殊硬體平台。

與其費時費力研究如何讓專用 Linux 驅動程式運作,購買一台支援標準印表機語言 (最好是 PostScript) 的印表機可能更符合成本效益。如此可一次解決所有驅動程式問題、減少安裝與設定特殊驅動程式軟體以及取得列印系統中新開發所需的驅動程式更新的需要。

12.7.2. PostScript 印表機沒有可用的 PPD 檔案

如果 manufacturer-PPDs 套件不包含適用於 PostScript 印表機的 PPD 檔案,可以使用印表機製造商提供的驅動程式 CD 中的 PPD 檔案,或從印表機製造商的網頁下載適合的 PPD 檔案。

如果 PPD 檔案以壓縮保存檔 (.zip) 或自解壓縮保存檔 (.exe) 形式提供,請以 unzip 解壓縮。首先,檢閱 PPD 檔案的授權條款。然後,請使用 cupstestppd 公用程式來檢查 PPD fi檔案是否符合 Adobe PostScript Printer Description File Format Specification, version 4.3 (Adobe PostScript 印表機說明檔案格式規格,版本 4.3)。如果公用程式傳回 FAIL,就表示 PPD 檔案非常嚴重,可能造成重大問題。應該要減少 cupstestppd 所報告的問題點。若有需要,請詢問印表機製造廠商以取得適合的 PPD 檔案。

12.7.3. 平行埠

最安全的方法是將印表機直接連接到第一平行埠,並在 BIOS 中選取下列平行埠設定值:

  • I/O 位址:378 (十六進位)

  • 中斷:無關

  • 模式:NormalSppOutput Only

  • DMA:停用

如果沒有這些設定值,印表機無法在平行埠上定址,請依照 BIOS 中的設定值,以 0x378 的格式在 /etc/modprobe.conf 中明確輸入 I/O 位址。如果有兩個平行埠,I/O 位址分別設為 378278 (十六進位),請以 0x378,0x278 格式輸入。

如果沒有使用中斷 7,可以使用 範例 12.1 「/etc/modprobe.conf:第一平行埠的中斷模式」 中所示的項目啟用。在啟用中斷模式之前,請檢查檔案 /proc/interrupts 以瞭解哪些中斷已經在使用中。只會顯示目前正在使用中的中斷。這可能因為作用中的硬體元件而有變化。其他任何設備都不能使用平行埠的中斷。如果您不確定,請以 irq=none 使用輪詢模式。

範例 12.1. /etc/modprobe.conf:第一平行埠的中斷模式

alias parport_lowlevel parport_pc
options parport_pc io=0x378 irq=7

12.7.4. 網路印表機連接方式

查明網路問題

將印表機直接連接到電腦。基於測試因素,請將印表機設為本地印表機。如果可以,問題便與網路相關。

檢查 TCP/IP 網路

TCP/IP 網路和名稱解析必須可作用。

檢查遠端 lpd

使用以下指令來測試是否可在主機上建立到 lpd (連接埠 515) 的 TCP 連接:

netcat -z host 515 && echo ok || echo failed

如果無法建立到 lpd 的連接,可能是 lpd 不在作用中,或是有基本網路問題。

以使用者 root 的身分,使用以下指令來查詢 (可能很長) 遠端 主機佇列 的狀態報告,假使對應的 lpd 在作用中且主機接受查詢:

echo -e "\004queue" \
| netcat -w 2 -p 722 host 515

如果 lpd 沒有回應,它可能不在作用中,或是有基本網路問題。如果 lpd 有回應,回應應該會顯示主機上的佇列為何無法列印。如果您收到類似範例 12.2 「來自 lpd 的錯誤訊息」 中的回應,問題可能是由遠端 lpd 所造成的。

範例 12.2. 來自 lpd 的錯誤訊息

lpd: your host does not have line printer access
lpd: queue does not exist
printer: spooling disabled
printer: printing disabled

檢查遠端 cupsd

CUPS 網路伺服器預設每 30 秒在 UDP 連接埠 631 上廣播一次其佇列。因而可以使用下面的指令來測試網路中是否有廣播 CUPS 網路伺服器。請確定在執行指令之前停止本地 CUPS 精靈。

netcat -u -l -p 631 & PID=$! ; sleep 40 ; kill $PID

如果廣播 CUPS 網路伺服器存在,輸出將如 範例 12.3 「來自 CUPS 網路伺服器的廣播」 中所示。

範例 12.3. 來自 CUPS 網路伺服器的廣播

ipp://192.168.2.202:631/printers/queue

可使用以下指令來測試是否可建立到主機cupsd (連接埠 631) 的 TCP 連接:

netcat -z host 631 && echo ok || echo failed

如果無法建立與 cupsd 的連接,則表明 cupsd 可能不在作用中或可能有基本的網路問題。假設對應的 cupsd 在作用中,而且主機可以接受查詢,則 lpstat -h host -l -t 會傳回 host 上所有佇列的狀態報告 (可能很大)。

此指令可用來測試主機上的佇列是否可接受由單一換行字元組成的列印工作。應該不會印出任何資料。可能會退出一張空白頁。

echo -en "\r" \
| lp -d queue -h host
網路列印或列印伺服器盒疑難排解

在列印伺服器盒中執行的線上同時週邊作業器在執行大量列印工作時,有時會造成問題。這是列印伺服器盒中的線上同時週邊作業器所造成的,因此無法解決。處理方式是,透過 TCP 插槽將印表機直接連接到列印伺服器盒,以規避列印伺服器盒中的線上同時週邊作業器。請參閱第 12.4 節「網路印表機」

利用此方法,可減少列印伺服器盒在不同資料格式之間的轉換問題 (TCP/IP 網路和本地印表機連接)。若要使用此方法,您必須知道列印伺服器盒上的TCP 連接埠。如果印表機連接到列印伺服器盒且電源開啟,此 TCP 埠通常可在列印伺服器盒電源開啟一段時間之後,以 nmap 套件的 nmap 公用程式決定。例如,nmap IP-address 會傳送列印伺服器盒的以下輸出:

Port       State       Service
23/tcp     open        telnet
80/tcp     open        http
515/tcp    open        printer
631/tcp    open        cups
9100/tcp   open        jetdirect

此輸出表示連接到列印伺服器盒的印表機可透過連接埠 9100 上的 TCP 插槽定址。根據預設,nmap 僅會檢查幾個 /usr/share/nmap/nmap-services 中所列出一般熟知的連接埠。若要檢查所有可能的連接埠,請使用指令 nmap -p from_port-to_port IP-address。這可能會花費一些時間。如需詳細資訊,請參閱 nmap 的 man 頁面。

輸入以下指令

echo -en "\rHello\r\f" | netcat -w 1 IP-address port
cat file | netcat -w 1 IP-address port

將字元字串或檔案直接傳送到對應連接埠以測試印表機是否可在此連接埠上定址。

12.7.5. 列印成品損毀而無錯誤訊息

對列印系統而言,在 CUPS 後端完成資料至接收者 (印表機) 的資料傳輸時,列印工作便完成。如果接收者的進一步處理失敗 (例如,印表機無法列印印表機特定資料),列印系統並不知道。如果印表機無法列印印表機特定資料,請選取更適合印表機的 PPD 檔案。

12.7.6. 停用佇列

如果到接收者的資料傳輸在數次嘗試之後完全失敗,CUPS 後端 (如 USBsocket) 會向列印系統報告錯誤 (向 cupsd)。在報告資料傳輸失敗之前,允許失敗嘗試的次數,由後端決定。因為進一步的嘗試可能徒勞無功,cupsd 會停止對應佇列的列印。排除問題的起因之後,系統管理員必須以指令 cupsenable 重新啟動列印。

12.7.7. CUPS 瀏覽:刪除列印工作

如果 CUPS 網路伺服器透過瀏覽向用戶端主機廣播它的佇列,而且在用戶端主機上有適合的本地 cupsd 在作用中,用戶端 cupsd 會從應用程式接收列印工作,並將它們轉送給伺服器上的 cupsd。當伺服器上的 cupsd 接受列印工作時,系統會為其指定一個新工作號碼。因此,用戶端主機上的工作號碼和伺服器上的工作號碼不同。列印工作通常會立刻轉送,所以無法以用戶端主機上的工作編號來刪除,因為用戶端 cupsd 一旦將列印工作轉送給伺服器 cupsd,便認為列印工作已完成。

若要刪除伺服器上的列印工作,假使伺服器尚未完成列印工作 (即尚未將工作完全傳送至印表機),請使用類似 lpstat -h cups.example.com -o 的指令來決定伺服器上的工作編號。使用此工作號碼,伺服器上的列印工作便可刪除:

cancel -h cups.example.com queue-jobnumber

12.7.8. 損毀的列印工作與資料傳輸錯誤

如果您在列印過程中關閉印表機或電腦,列印工作將保留在佇列中。一旦電腦 (或印表機) 重新開啟,列印工作將繼續進行。必須以 cancel 將損毀的列印工作從佇列中移除。

如果列印工作損毀,或是主機和印表機之間的通訊發生問題,印表機會印出數頁含有不明字元的紙張,因為它無法正確地處理資料。若要修正這種狀況,請執行下列步驟︰

  1. 若要停止列印,請從噴墨印表機取出所有紙張,或是打開雷射印表機的紙匣。高品質的印表機會有按鈕可取消目前的列印成品。

  2. 列印工作可能仍在佇列中,因為只有將工作完全傳送到印表機之後,才會移除。使用 lpstat -olpstat -h cups.example.com -o 檢查目前列印中的佇列。使用 cancel queue-jobnumbercancel -h cups.example.com queue-jobnumber 刪除列印工作。

  3. 即使列印工作已從佇列刪除,部份資料可能仍會傳送到印表機。請檢查對應佇列的 CUPS 後端程序是否仍在執行中,並將它終止。例如,對於連接到平行埠的印表機,可使用指令 fuser -k /dev/lp0 來終止所有仍在存取印表機的程序 (更精確的說,就是平行埠)。

  4. 將印表機關閉一段時間以完全重設印表機。然後裝入紙張並開啟印表機電源。

12.7.9. 除錯 CUPS 列印系統

使用以下標準程序以找出 CUPS 列印系統中的問題:

  1. 設定 /etc/cups/cupsd.conf 中的 LogLevel debug

  2. 停止 cupsd

  3. 移除 /var/log/cups/error_log* 以避免必須搜尋很大的記錄檔。

  4. 啟動 cupsd

  5. 重覆造成問題的動作。

  6. 檢查 /var/log/cups/error_log* 中的訊息以辨識問題的起因。

12.7.10. 如需更多資訊

許多特定問題的解決方法在「Novell 知識庫」(http://support.novell.com/) 中都有說明。請搜尋文字 CUPS 找到相關文章。