Mark Komarinski <markk@auratek.com> 指出:
非常感謝 Matt Foster 重寫這份 HOWTO。我儘量保留他的內容,並作出必要的增刪潤飾。
Matt Foster <mwf@engr.uark.edu> 指出:
這份 Linux Printing HOWTO 完全改寫了Grant Taylor <grant@god.tufts.edu> 和 Brian
McCauley <B.A.McCauley@bham.ac.uk> 的原文。本來我打算保留 Grant 和 Brian 原來 HOWTO
中的材料,但後來幾乎全部改寫並增加了許多新材料。我認為這份 HOWTO 中的材料比較完整,
也比較容易閱讀。我希望您同意我的看法。
v1.2.2
這份文件中提到的有些名字是某些人的版權和(或)商標名稱。這些名字在這份 HOWTO
中以全名或縮稱出現。
(c) 1995 Matt Foster (mwf@engr.uark.edu)
任何涉及 Linux HOWTO 的翻譯和作述均需載列這份版權說明。
換言之,如在此種作述中限制他人引用與 HOWTO 有關的內容就不得引用這份 HOWTO。在某些情況下,
可以有例外情況,但需與下址 Linux HOWTO 協調員聯系。
簡言之,即使這份文件儘量四處流通,但HOWTO 文件的版權還得保留,同時希望知道這份 HOWTO 文件的
流通情況。
任何問題均請與 Linux HOWTO 協調員 Tim Bynum 聯系。他的地址是 <linux-howto@sunsite.unc.edu>。不妨從他的地址查詢電話號碼和其他聯系資料。
歡迎對本文提出建議和批評,來信請寄
<markk@auratek.com>。
非常感謝對本文初版提出許多寶貴意見的朋友 --- 有些建議已經列入本文。
我也要感謝最初改寫本文的 Matt Foster 先生。
本節說明在 Linux 環境中如何打印文件、檢查列印隊列、從列印隊列刪除打印任務、
打印前文檔排版和設置打印環境等。
由于安全上的考量,只有 root 和屬於打印監控程式的同一群組的使用者才可書寫到打印機,
使打印機進行打印。這就是必需使用 lpr、lprm 和 lpq 等指令才能使用打印機的理由。
因此,使用者必需使用 lpr 列印文檔。lpr 為打印進行所有初始設定,
然後將任務交給打印監控程序 - lpd。這個打印監控程序隨即告知打印機如何打印文檔。
在 lpr 執行過程中,它首先將有待打印的文檔抄到一個目錄(假脫機目錄),
然後讓該文檔留在該目錄中等待 lpd 進行打印。一旦 lpd 得知有文檔等待打印,
它就自行生成一個備份(編程員稱為派生(forking))。這個派生的 lpd 監控程序就會打印有待打印的文檔,
同時原 lpd 仍繼續等待後面可能發出的打印指令。通過這種方式,Linux 系統可同時處理列隊打印任務。
使用 lpr(1) 指令的語法如下:
關於 lpr 使用的所有選項參數,見 lpr(1)。
lpq 的結果有許多用途。
如果接連的打印機是激光打印機,打印圖像就比較簡單,因為多數激光打印機都于 PCL 兼容。
如果不兼容,也可利用 NetPBM 等軟件將圖像轉換成 PCL 格式。
最後一種辦法就是使用 Ghostscript (見下節)。
打印圖像的最好辦法是安裝 NetPBM 和 Ghostscript 等軟件,然後安裝 magic filter 自動處理圖像檔。
Ghostscript 的任務就是將 PostScript 檔中的所有排版指令轉換成打印機能夠執行的指令。
利用 Ghostscript 打印 PostScript 檔,可能需要利用下列指令:
此處討論在他處沒有論及的問題。
Q1. 打印時如何消除“台階”現象?
A1. 有些打印機得每行給結束符,否則就會出現打印的台階現象。
打印機預期的結束符是回車/新行符(DOS 系統),而 UNIX 系統在結束一行時只加一個新行符。
解決這個問題的最簡便辦法是檢查是否可用某種開關控制打印機,使其能在這兩種打印之間轉換,
有時可用一個 DIP 開關,或可在打印前先發送一個換碼信號。如要採用第二種辦法,
得先設立一個過濾器(見 Q2)。
最快的解決辦法是在指令行使用過濾器。例如:
Q2. 什麼是過濾器?
A2. 過濾器是一套軟件,它可從標準輸入(stdin)讀入資料,然後對讀入的資料進行動作,
再以標準輸出(stdout)寫出。過濾器的用處佷多,包括可用于文本處理。
Q3. 什麼是魔術過濾器(magic filter)?
A3. 魔術過濾器是一種根據文檔的種類採取行動的過濾器。例如,如果文檔是沒有排版格式的文本文檔時,
則利用一般打印方式打印。如果文檔是 PostScript 文檔或其他格式文檔,則用其他方式打印
( ghostscript )。常用的魔術過濾器有 magicfilter
和 APSfilter。使用這類過濾器的一項要點是在安裝過濾器之前必需先安裝應用軟件。
需要注意這項要點的理由是在安裝 magicfilter 時,這個魔術過濾器會查詢系統中裝有何種打印程序
(例如 ghostscript,如果找到 ghostscript,則 magicfilter 就知道它能處理 PostScript
格式的文檔),然後根據找到的打印程序作出相應的設定。如果系統要處理所有打印文檔,
可能至少得安裝下列程序:
Q4. 何謂 Windows 打印系統(WPS)?Linux 能用這個打印系統嗎?
A4. 也許。只接受 WPS 指令的打印機無法用于 Linux 系統。接受 WPS 指令和其他打印指令的打印機
(如 Canon BJC 610 打印機)就可使用,只要將其設置成 WPS 格式以外的格式即可。其他打印機,
例如有些 HP DeskJet 820Cxi/Cse 打印機就*無法*用于 Linux。不過,儘管如此, Linux 可作為
Win95 機器的打印伺服器(見 Samba),因為 Win95 有這些打印機的驅動程序。
Q5. 這個系統怎麼這麼爛?只能打印 6 頁,超過 6 頁就顯示“file too large (文檔太長)”。
A5. 在 /etc/printcap 檔中有一個參數與打印的文檔長度有關。默認值是 1000 盤區(約 500 k)。
對 PostScript 這類文檔而言,這大約是 7-8 頁左右的長度。因此務必在打印機的設定中加入下列內容:
如果打印機不打印:
在 USENET 上提問時,考慮下列問題:
如果上述問題已有答案,那就最好不要在網上提問。如果仍要提問,應該列入與問題有關的資料。
如果提出“我的 lpr 有問題,請幫忙”這類問題,可能沒人會理會。最好還要列入內核版本、
不打印的情況是如何發生的和盡可能提供系統顯示的具體錯誤信息。