麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統(tǒng) > FreeBSD > 正文

FreeBSD handbook中文版 11 打印 (1)基本設(shè)置

2024-07-26 00:29:04
字體:
供稿:網(wǎng)友
目錄
11 打印
11.1 概要
11.2 介紹
11.3 基本設(shè)置

=============================================================
第11 章打印
=============================================================
(翻譯中出現(xiàn)的任何問題或錯誤,請廣大讀者及時反饋給我:[email protected]
11.1 概要
FreeBSD 支持許多種類的打印機,從最老式的impact 打印機,到最新的激光打印機, 
都可以讓你通過相關(guān)的應(yīng)用程序來提供高質(zhì)量的打印效果。
FreeBSD 也可以通過網(wǎng)絡(luò)來配置一個打印服務(wù)器。通過這種功能,F(xiàn)reeBSD 也可以從其
他的電腦上得到打印任務(wù),包括其它的FreeBSD 電腦、windows 和MACos 主機。FreeBSD 能
夠確保每個打印作業(yè)都能完成,并能夠統(tǒng)計用戶和機器的工作狀況,以使它們能達到最佳的
打印效果。FreeBSD 也能生成“banner”頁,來顯示誰打了什么和打了多少。
閱讀完這章,你將了解到: 
如何配置FreeBSD 的打印機spooler。
如何安裝打印機的過濾器,處理一些特殊的打印作業(yè)。包括轉(zhuǎn)換打印文件的格式。
如何在打印輸出文件中啟用header 或banner 文件。
如何通過連接到其他電腦來打印到打印機。
如何直接連接到網(wǎng)絡(luò)來打印到打印機。
如何管理打印機的限制,包括打印尺寸的大小,以及阻止某些用戶的打印。
如何記錄打印機的統(tǒng)計情況和用戶使用打印機的情況。
如何處理打印機出現(xiàn)的問題。
在閱讀這章之前,你應(yīng)當先了解: 
如何配置和安裝一個新的內(nèi)核(第9 章)。
11.2 介紹
第1 頁FreeBSD 使用手冊
要在FreeBSD 下使用打印機,你需要設(shè)置Berkeley line PRint spooling(打印池) 
系統(tǒng),也叫做LPD spooling 系統(tǒng)。這是FreeBSD 下控制打印機的標準。這一節(jié)將介紹LPD 
spooling 系統(tǒng),以下將簡稱為LPD。
如果你已經(jīng)熟悉LPD 或是其它的打印機spooling 系統(tǒng),你可以先跳到設(shè)置spooling 系
統(tǒng)那一節(jié)。LPD 控制任何有關(guān)連接在本機上的打印機的事情,包括: 
1. 控制本地打印機及網(wǎng)絡(luò)上其它打印機的訪問權(quán)限。
2. 接收使用者傳送的文件來打印;這些要打印的要求稱為工作。
3. 利用隊列來防止多個使用者同時訪問同一臺打印機。
4. 在輸出時打出header pages(也稱做banner 或burst)。這樣,使用者可以在厚厚
一打紙張中找出他們自己所打印的東西。
5. 為連接在串口上的打印機設(shè)置適當?shù)耐ㄓ崊?shù)。
6. 通過網(wǎng)絡(luò)將工作送給另一臺機器上的LPD spooler。
7. 執(zhí)行特定的過濾程序,讓你的工作可以兼容于使用不同打印機語言的打印機。
8. 統(tǒng)計打印機的使用情況。
11.2.1 為什么要使用spooler 
通過適當?shù)脑O(shè)置并提供特別的過濾程序,你可以使LPD 系統(tǒng)在不同的打印機上擁有上述
全部或部分的功能。
如果你的系統(tǒng)只有自己一個人在用,那么你可能會覺得既不需要權(quán)限控制、header 
pages、或是統(tǒng)計打印機使用情況,為什么還要用spooler?如果可以直接訪問打印機,那
么你仍然得使用spooler,因為: 
. LPD 在執(zhí)行脫機打印的工作時,你不需要花時間等待資料傳送到打印機。
. LPD 可以通過過濾程序,在你的文件上加上日期/時間等信息,或是轉(zhuǎn)換特別的文件
格式(如Tex、DVI 的文件)使打印機能處理。你不需要手動轉(zhuǎn)換。
. 很多免費及商業(yè)軟件所提供的打印功能通常會需要用到你系統(tǒng)上的spooler。你只
要設(shè)置好spooling 系統(tǒng),將來可以很容易的讓其它的程序使用打印機。
. 統(tǒng)計打印機的使用情況。
第2 頁FreeBSD 使用手冊
11.3 基本設(shè)置
讓LPD 可以配合打印機工作,你需要同時設(shè)置好你的打印機以及LPD。設(shè)置分為兩大部
分: 
1. 簡單的打印機設(shè)置這一節(jié)將告訴你如何連接打印機,并設(shè)置LPD 打印純文本的文
件。
2. 高級打印機設(shè)置這一節(jié)將告訴你如何讓打印機打出各種不同格式的文件、header 
pages、通過網(wǎng)絡(luò)打印、設(shè)置訪問權(quán)限以及統(tǒng)計打印機的使用情況。
11.3.1 簡單的打印機設(shè)置
這一節(jié)將說明如何連接打印機及設(shè)置LPD。包括: 
硬件設(shè)置這一節(jié)說明如何將打印機接到計算機上的連接端口。
軟件設(shè)置這一節(jié)說明如何撰寫LPD spooler 的設(shè)置文件/etc/printcap 。
如果你要設(shè)置的是網(wǎng)絡(luò)打印機,請參考使用網(wǎng)絡(luò)數(shù)據(jù)傳輸接口的打印機這一節(jié)。
雖然這一節(jié)叫做“簡單的打印機設(shè)置”,但其實是挺復(fù)雜的。讓你的打印機可以配合
LPD spooler 是設(shè)置工作中最難的一部分。一旦你的打印機可以正常工作了,較高級的功能
如打印header pages 和打印機使用情況統(tǒng)計反而比較容易設(shè)置。
11.3.1.1 硬件設(shè)置
這一節(jié)說明有哪些方法可以將打印機連到我們的個人計算機上;有哪些通訊端口、連接
線以及kernel 的設(shè)置。如果你的打印機在你使用的計算機上可以通過其它操作系統(tǒng)來打印, 
你也許可以跳過這一節(jié)直接到軟件設(shè)置那一節(jié)。
11.3.1.1.1 端口和線纜
幾乎所有可以和PC 連接的打印機都能支持下列兩種或是其中一種接口: 
第3 頁FreeBSD 使用手冊
1. 串行打印機通過串口和計算機傳輸資料。串行接口的配備及連接線可以容易的取得
及安裝。但是串行接口有時需要較特別的連接線及較復(fù)雜的設(shè)置。
2. 并行打印機通過并口和計算機傳輸資料。并口在市場上很普遍,連接線也很容易找
得到,但是不容易自己制作。利用并口連接打印機十分的容易,通常不需要設(shè)置額
外的通訊參數(shù)。
并口有時也稱做“Centronics”接口,這是根據(jù)打印機上面的接頭來命名的。
通常,只有使用PostScript 的打印機才需要用到雙向傳輸。PostScript 打印機可以說
是十分復(fù)雜。事實上,PostScript 的打印工作常常是由程序?qū)⒐ぷ魉偷酱蛴C處理后,并
不打出來,而是將結(jié)果再傳回計算機。PostScript 也使用雙向傳輸將錯誤傳回計算機。比
如說PostScript 程序有問題或是打印機卡紙。機器上的使用者可能會需要這些信息。更進
一步的,PostScript 打印機統(tǒng)計打印情況最好的方式就是使用雙向傳輸。比如說:你可先
詢問打印機啟動以來一共打過幾張,然后送出使用者要打的東西,打完后再詢問一共打了幾
張,由此就可得知得向使用者收多少紙張的錢。
那么,你該選擇哪一種接口呢? 
1. 如果你需要雙向傳輸,那么就選擇使用串口。FreeBSD 目前并不支持并口上的雙向
傳輸。
2. 如果你不需要雙向傳輸,那么,你只要選擇你的打印機支持的接口即可,當然最好
是可以用并行端口,而將串行端口留作其它的用途—比如連接終端機或調(diào)制解調(diào)器
—通常并口傳輸比較快,設(shè)置起來也較容易。
3. 最后,如果還是不知道怎么選的話,就看哪個能用就接哪個吧。
11.3.1.1.2 并行口
用Centronics 連接線通過并口連接打印機和計算機。打印機的手冊、計算機的手冊這
兩者都可以給你足夠的安裝說明。記住你所使用的并行口。在FreeBSD 里,第一個并行口是
/dev/lpt0;第二個則是/dev/lpt1,依此類推。
11.3.1.1.3 串行口
第4 頁FreeBSD 使用手冊
用適當?shù)倪B接線通過串行口連接打印機和計算機。打印機的手冊、計算機的手冊這兩者
都可以給你足夠的安裝說明。如果你不確定你的連線是否為“合適的串行口連接線”,你可
以試試下面幾種不同用途的線: 
1. 連接調(diào)制解調(diào)器的線。這種線是一個接腳對一個接腳直接對接的。這種線也叫做
“DTE-to-DCE”連接線。
2. Null-modem 連接線大部分是一個接腳對一個接腳直接對接,而有少部分接腳相互
交換(如send data 和receive data);有少部分接腳則是兩端都是短路。這種線
也叫做“DTE-to-DTE”連接線。
3. 并行打印機連接線,某些不常見的打印機需要這種線。這種線類似null-modem 連
接線,但是有些信號是送到相對應(yīng)的接腳而不是兩端短路。
你應(yīng)當為打印機設(shè)置通訊參數(shù),通常可以利用打印機上的控制面板或是DIP 開關(guān)設(shè)置。
選擇你的計算機和打印機同時支持的最高傳輸速率(單位為bps,bits per second,也稱做
baud rate)。選擇7 或8 的數(shù)據(jù)位;無、奇數(shù)或偶數(shù)的同位檢查;1 或2 停止位。同時也選
擇流量控制的方式:無、XON/XOFF (也稱做“in-band”或“軟件”)流量控制。記住你的軟
件設(shè)置也要使用同樣的值。
11.3.1.2 軟件設(shè)置
這節(jié)說明如何設(shè)置FreeBSD 下的LPD spooling 系統(tǒng),使其能打印。
下列是所需的步驟: 
1. 如果需要的話,設(shè)置你的kernel,使該連接端口可被打印機使用。設(shè)置Kernel 這
一節(jié)將告訴你需要做些什么。
2. 如果你使用的是并行口,那么你得設(shè)置并口的通訊模式。設(shè)置并列端口的通訊模式
這一節(jié)有詳細的說明。
3. 測試操作系統(tǒng)是否可以將資料送給打印機。檢查打印機連接狀況這節(jié)將給你一些關(guān)
于這一方面的建議。
4. 修改/etc/printcap 以正確設(shè)置LPD。/etc/printcap 設(shè)置文件將告訴你如何做。
第5 頁FreeBSD 使用手冊
11.3.1.2.1 內(nèi)核配置
操作系統(tǒng)的kernel 為了能配合某些設(shè)備需要重新編譯。而串口和并口就是這些設(shè)備之
一。如果你的kernel 目前并不支持你想用的串口或并口,那么你可能需要將它們加入你的
kernel 設(shè)置并重新編譯。如果要檢查你的kernel 目前是否支持串口,你可以用這個命令: 
# dmesg | grep sioN 
其中N 是串口的編號,從0 開始計算。如果你得到的結(jié)果類似下面這個樣子: 
sio2 at 0x3e8-0x3ef irq 5 on isa 
sio2: type 16550A 
表示你的kernel 支持這個通訊端口。
如果要檢查你的kernel 目前是否支持并行口,你可以用這個命令: 
# dmesg | grep lptN 
其中N 是并行口的編號,從0 開始計算。如果你得到的結(jié)果類似
lpt0 at 0x378-0x37f on isa 
表示你的kernel 支持這個通訊端口。
你可能會需要重新設(shè)置你的kernel 使得操作系統(tǒng)可以辨認并使用你連接打印機的并口
或串口。
如果要讓你的kernel 支持串口,請參考關(guān)于重新編譯kernel 的那一節(jié)。如果要讓你的
kernel 支持并口,請參考關(guān)于重新編譯kernel 的那一節(jié)以及下一節(jié)。
11.3.1.3 為端口新增/dev 下的設(shè)備文件
既然kernel 已經(jīng)支持你所需的并口或串口,你仍然需要一個程序接口在系統(tǒng)里協(xié)助傳
送和接收資料。這也是/dev 里設(shè)備文件存在的目的。
第6 頁FreeBSD 使用手冊
如果要在/dev 目錄下為你的通訊端口建立相對應(yīng)的設(shè)備文件: 
1. 用su 命令切換成root。
2. 更改當前的目錄到/dev 下: 
# cd /dev 
3. 輸入: 
# ./MAKEDEV port 
其中port 是你想要建立的設(shè)備文件名稱。如果是第一個并口,你可以用lpt0;如
果是第二個并口,你可以用lpt1,依此類推。如果是第一個串口,你可以用ttyd0 
如果是第二的串口,而用ttyd1;依此類推。
4. 輸入: 
# ls -l port 
以確定你剛剛是否建立成功。
11.3.1.3.1 為并口設(shè)置通訊模式
當你決定要用并口時,在FreeBSD 下你可以決定要用中斷驅(qū)動(interrupt-driven)或是
輪詢(polled)的方式與打印機溝通。
1. 中斷驅(qū)動是GENERIC kernel 里默認的方式。如果選擇這個方式,操作系統(tǒng)將利用
IRQ 來判斷打印機是否已經(jīng)準備好接收資料。
2. 而輪詢的方式則是由操作系統(tǒng)一直重復(fù)地去詢問打印機是否已經(jīng)準備好可以接收
資料。如果打印機已經(jīng)準備好了,那么kernel 再將要打印的資料送過去。
中斷驅(qū)動的方式較快但是要占用一個IRQ。你可以從上述兩者任選一個可以正常工作的
來使用。設(shè)置通訊模式有兩種方式:設(shè)置kernel 或是使用lptcontrol 這個程序。
如果要從kernel 里設(shè)置: 
第7 頁FreeBSD 使用手冊
1. 編輯你的kernel 設(shè)置文件。找出或是自行加入lpt0 這一項。如果你要設(shè)置使用第
二個并口,那就加入lpt1 這項。如果是第三個并口就用lpt2,依此類推。
如果你要設(shè)置使用中斷驅(qū)動模式,那么要指定irq: 
device lpt0 at isa? port? tty irq N vector lptintr 
其中N 是你并口所使用的IRQ 編號。
如果你要用輪詢模式,那么就不要指定irq: 
device lpt0 at isa? port? tty vector lptintr 
2. 將設(shè)置文件存儲好后,重新編譯、安裝kernel 并重新啟動。你可以參考內(nèi)核配置那
一節(jié)里更詳細的說明。
如果你想用lptcontrol 來設(shè)置通訊模式: 
1. 輸入: 
# lptcontrol -i -u N 
將lptN 設(shè)置為中斷驅(qū)動模式。
2. 輸入: 
# lptcontrol -p -u N 
將lptN 設(shè)置為輪詢模式。
你可以把上述的命令加到你的/etc/rc.local 文件里使得每次啟動時都可以自動設(shè)置。
你可以查看lptcontrol 以得到更多有關(guān)的信息。
11.3.1.3.2 檢查打印機的通訊狀況
在設(shè)置spooling 系統(tǒng)前,你應(yīng)該先確定你的操作系統(tǒng)可以成功地將資料送到你的打印
機。將打印機的連接和spooling 系統(tǒng)分開來測試會較容易。
你可以送一些文字來測試你的打印機。打印機應(yīng)該會馬上將它們收到的資料打出來。
lptest 這個程序會送96 行每行96 個ASCII 文字的資料給你的打印機以協(xié)助測試。
第8 頁FreeBSD 使用手冊
使用PostScript(或是其它語言)的打印機測試起來較復(fù)雜。我們得先寫一個較小的測
試程序,像下面這樣: 
%!PS 
100 100 moveto 300 300 lineto stroke 
310 310 moveto /Helvetica findfont 12 scalefont setfont 
(Is this thing working?) show 
showpage 
注意:上面這個小程序是給使用PostScript 的打印機用的,不能給比如說Hewlett 
Packard 公司的PCL 語言使用。PCL 語言可以讓你打印純文本,同時里面夾雜PCL 特別的命
令。PostScript 不能直接打印純文本,因此對于這樣的打印機,我們必需做一些特別的設(shè)
置。
11.3.1.3.2.1 檢查一下并口打印機
這節(jié)將告訴你如何檢查FreeBSD 是否可以使用接在并口的打印機。
測試并口上的打印機: 
1. 用su 命令切換成root。
2. 將資料傳送給打印機。
如果這個打印機可以直接打印純文本,請使用lptest。輸入: 
# lptest > /dev/lptN 
其中N 是你打印機所連接的并列端口。從0 開始計算。
如果這個打印機使用PostScript 或其它的打印機語言,那么送一個小小的測試程序給
打印機。輸入: 
# cat > /dev/lptN 
然后,一行接著一行,小心的把你的命令打進去,因為你按下ENTER 后,就無法再修改
了。當你輸入完畢后,按CONTROL+D 或是其它產(chǎn)生文件結(jié)尾字符的按鍵。或者是你可以將你
的測試程序放在一個文件里并輸入: 
# cat file > /dev/lptN 
第9 頁FreeBSD 使用手冊
其中file 就是存儲你測試程序的文件名。
你應(yīng)該可以看到有一些東西打出來了。如果打出來的資料看起來不大正確,別擔心,我
們等一會就修正它們。
11.3.1.3.2.2 檢查一下串口打印機
這節(jié)將告訴你如何檢查FreeBSD 是否可以使用接在串口的打印機。
測試串口上的打印機: 
1. 用su 命令切換成root。
2. 編輯/etc/remote 這個文件,并加入下列幾行: 
printer:dv=/dev/port:br#bps-rate:pa=parity 
其中port 指的是哪一個串口(ttyd0、ttyd1、等等),bps-rate 指的是該串口的傳
輸速度,而parity 是設(shè)置打印機是否需要同位檢查(這個值可以是even、odd、none 
或zero)。
下面這個例子是一臺連接在串行端口上以19200 bps 傳輸?shù)模瑫r不使用同位檢查
的打印機設(shè)置方式: 
printer:dv=/dev/ttyd2:br#19200:pa=none 
3. 用tip 命令連上打印機。輸入: 
# tip printer 
如果失敗的話,再次編輯/etc/remote 這個文件同時以/dev/cuaaN 取代/dev/ttydN。
4. 將資料傳送給打印機。
如果這個打印機可以直接打印純文本,請使用lptest。輸入: 
~$lptest 
如果這個打印機使用PostScript 或其它的打印機語言, 那么送一個小小的測試程序給
打印機。一行接著一行,非常小心地將程序輸入,因為退格鍵或是其它編輯時常用的按鍵, 
第10 頁FreeBSD 使用手冊
對打印機可能有特殊的意義。最后你可能要打一個給打印機的文件結(jié)尾的字符,讓它知道程
序結(jié)束了。對PostScript 的打印機來說,是用CONTROL+D 鍵。
或者是你可以將你的測試程序放在一個文件里并輸入: 
~>file 
其中file 就是存儲你測試程序的文件名。用tip 將這個文件送給打印機后,而按文件
結(jié)尾字符。
你應(yīng)該可以看到有一些東西打出來了。如果打出來的資料看起來不大正確,別擔心,我
們稍待一會就修正它們。
11.3.1.4 啟用spooler:編輯/etc/printcap 文件
到目前為止,你的打印機應(yīng)該已經(jīng)連接好了,你的kernel 應(yīng)該也設(shè)置無誤了,而且你
也可以傳送資料給打印機了。現(xiàn)在,我們應(yīng)該可以開始設(shè)置LPD 來控制打印機了。
LPD 的設(shè)置文件是/etc/printcap。每當spooler 被使用時,LPD spooling 系統(tǒng)就會來讀這
個文件,所以只要這個文件一被修改,馬上就會生效。
編輯printcap 這個設(shè)置文件是很簡單的。用你喜歡的編輯器對/etc/printcap 這個設(shè)
置文件做修改就可以了。這個文件的格式寫法和其它的設(shè)置文件如
/usr/share/misc/termcap 和/etc/remote 是相同的。關(guān)于這些設(shè)置文件的格式,請參考
cgetent。
要建立一個簡單的spooler 設(shè)置,請按照下列步驟: 
1. 為你的打印機選擇一個名字(以及一些方便的別名),并把它們放在/etc/printcap 
這個文件里。請閱讀為打印機取名這一節(jié)。
2. 用sh 關(guān)鍵詞關(guān)閉打印header pages 的功能(默認是打開此功能)。請閱讀不打印
Header Pages 這一節(jié)。
3. 用sd 關(guān)鍵詞指定一個目錄給spooler 用。請閱讀建立Spooling 目錄這一節(jié)。
4. 在/etc/printcap 設(shè)置文件里用lp 關(guān)鍵詞指定打印機連接端口在/dev 下使用的設(shè)備
文件。請閱讀辨認打印機設(shè)備這一節(jié)。如果你的打印機是接在串口,那么你可以用
fs、fc、xs 以及xc 等關(guān)鍵詞來設(shè)置通訊參數(shù)。請閱讀設(shè)置Spooler 的通訊參數(shù)。
5. 安裝輸入文字過濾程序;請參考安裝文字過濾程序這一節(jié)。
第11 頁FreeBSD 使用手冊
6. 利用lpr 命令打印以測試設(shè)置是否正確;請閱讀測試及疑難解答這兩節(jié)。
注意: 使用特定語言的打印機,比如說PostScrit 打印機,無法直接打印純文本。上述
以及下面要介紹的方法將假設(shè)你所要打印的文件都是不需要轉(zhuǎn)換就能讓打印機直接了解
的。
使用者通常會期望它們可以直接將純文本的資料直接由打印機輸出,而使用LPD 打印的
程序通常也是這么假設(shè)的。如果你的打印機使用某個特定的打印機語言,且你希望可以同時
處理特定打印機語言的資料以及純文本的資料,那么你應(yīng)該要另外再多安裝一項以前沒有提
到的東西:純文本轉(zhuǎn)成PostScript(或其它打印機語言)的自動轉(zhuǎn)換程序。在PostScript 打
印機上打印純文本這一節(jié)將告訴你要怎么做。
11.3.1.4.1 為打印機命名
第一就是為你的打印機取一個名字。此外,你也可為你的打印機取很多別名,因此,你
要取符合功能的名字或是古怪的名字都可以。
在/etc/printcap 里定義的打印機,至少要有一臺取lp 別名。這是默認的打印機名稱。
如果使用者沒有環(huán)境變量PRINTER 設(shè)置打印機的名稱,且在LPD 的命令也沒有指定任何打印
機的話,那么別名為lp 的打印機就會被視為默認的打印機。
通常,我們會將一臺打印機的最后一別名取為它的全名,包括制造商以及型號。
當你將打印機的名稱及別名設(shè)置在/etc/printcap 文件里時,打印機的名稱一定要放
在最左邊的字段。其它的別名則以垂直的線(|)分開,而在最后一個別名之后加一個冒號(:)。
在下面的例子里,我們大略描述一下/etc/printcap 的骨干。這個例子里定義了兩臺打印機。
(Diablo 630 以及Panasonic KX-P4455 PostScript 激光打印機。): 

# /etc/printcap for host rose 

rattan|line|diablo|lp|Diablo 630 Line Printer: 
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4: 
在這個例子里,第一臺打印機取名為rattan 而它的別名有l(wèi)ine、diablo、lp 以及Diablo 
630 Line Printer。這臺打印機有l(wèi)p 這個別名,因此它也是默認的打印機。第二臺取名為
bamboo,而它的別名有ps、PS、S、panasonic 以及Panasonic KX-P4455 PostScript v51.4。
11.3.1.4.2 不打印頭文件
第12 頁FreeBSD 使用手冊
LPD spooling 系統(tǒng)默認是為每個打印工作打印header page 的。Header page 包括了送
出打印工作的使用者名稱、送出工作的機器名稱以及工作的名稱。不幸的是,這些額外的信
息可能會妨礙我們做簡單的打印機設(shè)置測試,因此我們想不要打印header pager。
在/etc/printcap 用sh 關(guān)鍵詞為特定的打印機設(shè)置不打印header pages。這里有一個
在/etc/printcap 里使用sh 的例子: 

# /etc/printcap for host rose - no header pages anywhere 

rattan|line|diablo|lp|Diablo 630 Line Printer:/ 
:sh: 
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:/ 
:sh: 
注意:我們使用的正確格式:打印機定義的第一行得從第一個字開始寫的,而其后的每
一行用TAB 鍵往內(nèi)縮一格。而一行如果寫不完需要接到下一行時,則以反斜線字符結(jié)尾。
11.3.1.4.3 建立spooling 目錄
下一步就是建立一個spooling 目錄,一個在打印時會用到以及存放一些spooler 需要
的文件的地方。
通常我們會將spooling 目錄指定在/var/spool 目錄下。你不需要備份spooling 目錄, 
而建立它也只要以mkdir 命令即可。
通常我們會將spooling 目錄以打印機的名稱建立,如下所示: 
# mkdir /var/spool/printer-name 
然而,如果在你的網(wǎng)絡(luò)中有很多打印機的話,你也許會希望將所有的spooling 目錄放
在一個LPD 專用的目錄下。以我們的打印機rattan 和bamboo 為例: 
# mkdir /var/spool/lpd 
# mkdir /var/spool/lpd/rattan 
# mkdir /var/spool/lpd/bamboo 
注意: 如果你關(guān)心的是使用者打印資料的隱私,那么你應(yīng)該要將spooling 目錄的權(quán)限
做適當?shù)脑O(shè)置。Spooling 目錄應(yīng)該要屬于daemon 這個使用者同時并允許它讀、寫及搜索, 
而其它人都無法訪問此目錄。因此,我們應(yīng)該要這樣設(shè)置: 
第13 頁FreeBSD 使用手冊
# chown daemon.daemon /var/spool/lpd/rattan 
# chown daemon.daemon /var/spool/lpd/bamboo 
# chmod 770 /var/spool/lpd/rattan 
# chmod 770 /var/spool/lpd/bamboo 
最后,在/etc/printcap 文件里,你可以用sd 關(guān)鍵詞來指定spooling 的目錄: 

# /etc/printcap for host rose - added spooling directories 

rattan|line|diablo|lp|Diablo 630 Line Printer:/ 
:sh:sd=/var/spool/lpd/rattan: 
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:/ 
:sh:sd=/var/spool/lpd/bamboo: 
注意:打印機的名字一定是在定義第一行的第一個字,而其它行都要以TAB 縮進。如果
需要換行則需要在行末加上反斜線字符。
如果你沒有用sd 指定spooling 目錄,那么系統(tǒng)默認的spooling 目錄將會是
/var/spool/lpd 。
11.3.1.4.4 識別打印機設(shè)備
在為通訊端口新增/dev 目錄下的設(shè)備文件這一節(jié)里,我們在/dev 目錄下選定了要給
FreeBSD 使用與打印機通訊的連接端口。現(xiàn)在我們要告訴LPD 這個信息。當spooling 系統(tǒng)
有工作要打印時,它將會告訴過濾程序(負責送資料給打印機)使用指定的設(shè)備。
在/etc/printcap 用lp 關(guān)鍵詞指定使用/dev 下的設(shè)備名稱。
在我們的例子中,我們設(shè)置rattan 使用第一個并口,而bamboo 使用第六個串口。因此
在/etc/printcap 中我們設(shè)置: 

# /etc/printcap for host rose - identified what devices to use 

rattan|line|diablo|lp|Diablo 630 Line Printer:/ 
:sh:sd=/var/spool/lpd/rattan:/ 
:lp=/dev/lpt0: 
第14 頁FreeBSD 使用手冊
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:/ 
:sh:sd=/var/spool/lpd/bamboo:/ 
:lp=/dev/ttyd5: 
如果你在/etc/printcap 里沒有用lp 關(guān)鍵詞指定要使用哪個通訊端口,LPD 將會使用
/dev/lp 為默認的通訊端口。/dev/lp 目前在FreeBSD 中并不存在。
如果你現(xiàn)在安裝的打印機是連接在并口上,那么請?zhí)涟惭b文字過濾程序這一節(jié),否
則,請按照下面這一節(jié)繼續(xù)設(shè)置。
11.3.1.4.5 配置spooler 通訊參數(shù)
對于連接在串口上的打印機,LPD 設(shè)置的傳輸速率、同位檢查、以及其它的通訊參數(shù), 
使得過濾程序能送資料到打印機上。這是較有利的。因為: 
1. 你只要編輯/etc/printcap 就可以使用不同的通訊參數(shù)。不需要去重新編譯你的過
濾程序。
2. 允許spooling 系統(tǒng)在多臺打印機、多種不同通訊參數(shù)設(shè)置的情況下用同一個過濾
程序。
在/etc/printcap 設(shè)置文件里,下列關(guān)鍵詞控制lp 所指定的通訊端口: 
br#bps-rate 
設(shè)置通訊端口傳輸速度為bps-rate 其中bps-rate 可以是50、75、110 、134、150、
200、300、600、1200、1800、2400、4800、9600、19200 或是38400 bit-per-second。
fc#clear-bits 
打開通訊端口后,清除sgttyb 結(jié)構(gòu)里的標記位clear-bits。
fs#set-bits 
設(shè)置sgttyb 結(jié)構(gòu)里的標記位set-bits。
xc#clear-bits 
打開通訊端口后,清除local 模式位clear-bits。
xs#set-bits 
設(shè)置local 模式位set-bits。
第15 頁FreeBSD 使用手冊
關(guān)于fc、fs、xc 以及xs 關(guān)鍵詞各個bit 的說明,請參考
/usr/include/sys/ioctl_compat.h。當LPD 打開由lp 所指定的通訊端口時,會先讀取
sgttyb 這個結(jié)構(gòu),然后清掉fc 關(guān)鍵詞所指定的位再設(shè)置由fs 關(guān)鍵詞所指定的位。設(shè)置完
成后,才開始使用這個結(jié)構(gòu)。同樣的,對local 模式位設(shè)置也是以一樣方式的處理。
讓我們在我們的例子里為第六個串行端口設(shè)置這些位。我們會將傳輸速率設(shè)置成38400 bps。
而在標記位方面,我們會設(shè)置TANDEM、ANYP、LITOUT、FLUSHO 以及PASS8 這些位。而local 
模式位,我們將設(shè)置LITOUT 以及PASS8 位: 
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:/ 
:sh:sd=/var/spool/lpd/bamboo:/ 
:lp=/dev/ttyd5:fs#0x82000c1:xs#0x820: 
11.3.1.4.6 安裝文本過濾器
現(xiàn)在可以開始設(shè)置LPD 用什么文字過濾程序送工作給打印機。一個文字過濾程序也叫做
輸入用過濾程序,當LPD 有東西要打印時,它就會執(zhí)行這個程序。當LPD 運行這個程序時, 
它會將過濾程序的標準輸入設(shè)為要打印工作的標準輸入,而過濾程序的標準輸出則送給以
lp 關(guān)鍵詞指定的通訊端口。因此過濾程序必需要能從標準輸入讀入要打印的東西,做適當
的處理后,將結(jié)果從標準輸出送出。而這些輸出就會被打出來。請參考過濾程序的運作方式
這一節(jié)以更進一步的了解過濾程序。
在我們的打印機設(shè)置里,文字過濾程序可能只是一個執(zhí)行/bin/cat 命令的shell script 
將工作送給打印機。FreeBSD 里有一個叫做lpf 的過濾程序能處理倒退、底線等打印機可能
無法正確處理的資料。當然,你也可以用任何你想用的過濾程序。關(guān)于lpf 這個過濾程序在
文字過濾程序:lpf 這一節(jié)里有更詳細的說明。
首先, 讓我們做一個簡單的shell script 文字過濾程序, 
/usr/local/libexec/if-simple。用你熟悉的編輯器編輯這個文件: 
#!/bin/sh 

# if-simple - Simple text input filter for lpd 
# Installed in /usr/local/libexec/if-simple 

# Simply copies stdin to stdout. Ignores all filter arguments. 
第16 頁FreeBSD 使用手冊
/bin/cat && exit 0 
exit 2 
然后要讓這個文件可執(zhí)行: 
# chmod 555 /usr/local/libexec/if-simple 
同時,在/etc/printcap 設(shè)置文件里用if 關(guān)鍵詞告訴LPD 來使用這個過濾程序。在下面
的例子里,我們在/etc/printcap 中為兩臺打印機都指定了過濾程序: 

# /etc/printcap for host rose - added text filter 

rattan|line|diablo|lp|Diablo 630 Line Printer:/ 
:sh:sd=/var/spool/lpd/rattan:/ :lp=/dev/lpt0:/ 
:if=/usr/local/libexec/if-simple: 
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:/ 
:sh:sd=/var/spool/lpd/bamboo:/ 
:lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:/ 
:if=/usr/local/libexec/if-simple: 
11.3.1.4.7 打開LPD 
lpd 從/etc/rc 運行,通過使用lpd_enable 來控制。默認是NO。如果你還沒有啟用它, 
可以加入下面這行到/etc/rc.conf,然后重新啟動電腦或只運行l(wèi)pd: 
lpd_enable="YES" 
# lpd 
11.3.1.4.8 測試
你已經(jīng)把LDP 需要的設(shè)置都完成了。不過,我們需要測試看看這些設(shè)置是否可以正確地
工作。測試的方法就是打出一些東西。如果要用LPD 系統(tǒng)來打印,我們可以使用lpr 這個命
令來送出一些打印工作。
你可以使用檢查打印機連接狀況這一節(jié)里介紹的lpr 及l(fā)ptest 來產(chǎn)生一些測試文字。
測試LPD 設(shè)置: 
第17 頁FreeBSD 使用手冊
輸入:
# lptest 20 5 | lpr -Pprinter-name 
其中printer-name 是/etc/printcap 里的某一臺打印機名稱或別名。如果要測試默認
的打印機,那么在執(zhí)行l(wèi)pr 命令時不要指定-P 這個參數(shù)。再一次的提醒,如果你要測試的
是PostScript 打印機,那么請傳送PostScript 程序給打印機,而不要用lptest。你可以
將程序放在一個文件里然后輸入lpr file。
如果是PostScript 打印機,你應(yīng)該會得到程序輸出的結(jié)果。如果你是用lptest 的話, 
那么你的結(jié)果看起來應(yīng)該是下面這個樣子: 
!”#$%&’()*+,-./01234 
“#$%&’()*+,-./012345 
#$%&’()*+,-./0123456 
$%&’()*+,-./01234567 
%&’()*+,-./012345678 
如果要做更進一步的測試,你可以下載更大的程序(給某個特定打印機語言的打印機使
用)或是在執(zhí)行l(wèi)ptest 時加一些額外的參數(shù)。例如lptest 80 60 將會產(chǎn)生60 行每行80 個
字符的測試數(shù)據(jù)。
如果打印機并沒有反應(yīng),請參考疑難解答這一節(jié)。
11.3.1.4.9 疑難解答
用lptest 做過簡單的測試后,你可能會遇到下列的問題。打印機打了一陣子,但是并
沒有輸出任何結(jié)果。
打印機打出上面所列的東西,但是沒多久就停了。這時,你可能需要按打印機上的PRINT 
REMAINING 或FORM FEED 鈕才看得到輸出的結(jié)果。
如果是這種情況的話,打印機在打印前可能在等待是否還有更多的資料要打印。要解決
這個問題,你可以讓你的文字過濾程序送出FORM FEED 字符(或是其它需要的字符)給打印機。
這個動作讓打印機打出目前打印機緩存區(qū)里的資料。同時也確定每個工作的最后一頁可以完
整的輸出,使得下個工作不會從前一個工作的最后一頁中間輸出。
下面這個shell script 取代/usr/local/libexec/if-simple。將工作送給打印機后, 
會再送出一個form feed 字符: 
#!/bin/sh 
第18 頁FreeBSD 使用手冊

# if-simple - Simple text input filter for lpd 
# Installed in /usr/local/libexec/if-simple 

# Simply copies stdin to stdout. Ignores all filter arguments. 
# Writes a form feed character (/f) after printing job. 
/bin/cat && printf “/f” && exit 0 
exit 2 
打出了“階梯效應(yīng)”。
你的結(jié)果可能是這個樣子: 
!”#$%&’()*+,-./01234 
“#$%&’()*+,-./012345 
#$%&’()*+,-./0123456 
這時你已經(jīng)成為因為換行字符沖突而產(chǎn)生的階梯效應(yīng)受害者。UNIX 風格的操作系統(tǒng)只
使用ASCII 碼10,line feed (LF) 作為換行字符。MS-DOS、OS/2 以及其它的操作系統(tǒng)使用
兩個字符ASCII 碼10 以及ASCII 碼13 (稱做carriage return 或CR)。很多打印機使用MS-DOS 
的表示法來代表換行字符。
當你用FreeBSD 打印時,你的文件只用line feed 字符換行。當打印機看到一個line feed 
字符時,將紙卷了一行,仍然從同一個位置繼續(xù)往后打印。這就是為什么要用carriage 
return 字符的原因:將下一個字的打印位置移到紙張的最左邊。
FreeBSD 希望你的打印機可以: 
打印機收到CR 打印機打印CR 
打印機收到LF 打印機打印CR + LF 
有一些方法可以達到這個目地: 
1. 用打印機上的開關(guān)或控制面板設(shè)置這些字符的處理方式。請查閱你的打印機手冊并做正
確的設(shè)置。
注意: 如果你的計算機安裝了除了FreeBSD 外的操作系統(tǒng),你也許得常常重新
設(shè)置打印機處理CR 和LF 的設(shè)置。因此,你可能會希望使用下面其中之一的方
第19 頁FreeBSD 使用手冊
法: 
2. 讓FreeBSD 的串口驅(qū)動程序自動將LF 轉(zhuǎn)換成CR+LF。當然,你的打印機只能在串行口
上。如果要打開這個功能,只要在/etc/printcap 設(shè)置文件里為你的打印機用fs 關(guān)鍵詞設(shè)
置CRMOD 這個位即可。
3. 送一個句柄給打印機告訴它暫時把LF 字符做額外的處理。請參閱你的打印機手冊以了
解你的打印機是否支持此功能。如果你找到適用的句柄,修改你的文字過濾程序先送出這些
句柄,再送出要打印的工作。
下面這個文字過濾程序的例子是使用Hewlett-Packard PCL 句柄。先讓打印機將LF 視
為LF 和CR 處理,再送出工作。最后,再送出將整頁送出的句柄。這個過濾程序應(yīng)該可以應(yīng)
付大部分Hewlett-Packard 的打印機。
#!/bin/sh 

# hpif - Simple text input filter for lpd for HP-PCL based printers 
# Installed in /usr/local/libexec/hpif 

# Simply copies stdin to stdout. Ignores all filter arguments. 
# Tells printer to treat LF as CR+LF. Ejects the page when done. 
printf “/033&k2G” && cat && printf “/033&l0H” && exit 0 
exit 2 
而下面這個/etc/printcap 的例子是設(shè)置一臺叫做orchid 計算機。它在第一個并口連
接了一臺叫做teak 的Hewlett-Packard LaserJet 3Si 打印機。同時,它使用了上述的script 
作為它的文字過濾程序: 

# /etc/printcap for host orchid 

teak|hp|laserjet|Hewlett Packard LaserJet 3Si:/ 
:lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:/ 
:if=/usr/local/libexec/hpif: 
第20 頁每一行都重迭在一起
打印機從不換行,把每一行都印在同一行上。這個問題和上述的階梯效應(yīng)“相反”。而
且也較罕見。FreeBSD 用來換行的LF 字符被當成CR 字符使得打印機一直回到紙張的最左邊
開始打印但卻不換行。使用打印機上的設(shè)置開關(guān)或是控制面板設(shè)置使LF 和CR 字符這樣被處
理: 
打印機會少打某些字
打印時,打印機在一行之中會少打某些字。這個情況在打印時可能會變得愈來愈嚴重, 
有愈來愈多的字打不出來。這是因為打印機接收資料的速度無法跟上計算機通過串行端口送
資料的速度(這個問題在并列端口打印機上應(yīng)該不會發(fā)生)。有兩種方式可以解決這個問題: 
1. 如果打印機支持XON/XOFF 流量控制,在FreeBSD 里可以用fs 關(guān)鍵詞來設(shè)置TANDEM 位。
2. 如果打印機支持carrier 流量控制,用fs 關(guān)鍵詞來設(shè)置MDMBUF 位。確定連接打印機及
計算機的連接線可以配合carrier 流量控制使用。
3. 如果打印機不支持任何一種流量控制,那么在fs 關(guān)鍵詞里試著設(shè)置NLDELAY、TBDELAY、
CRDELAY、VTDELAY 以及BSDELAY 等位的組合以適當?shù)难舆t資料送到打印機。
打出亂碼
打印機打出看不懂的符號,而不是我們期望中的數(shù)據(jù)。這通常是因為序列打印機的通訊
參數(shù)設(shè)置不正確而造成的。再檢查一次br 關(guān)鍵詞所設(shè)置的傳輸速率、fs 及fc 關(guān)鍵詞所設(shè)置
的同位檢查。同時也檢查打印機是否也使用與/etc/printcap 文件里相同的設(shè)置。
沒有任何動作發(fā)生
如果沒有任何反應(yīng),那么可能是FreeBSD 的問題而不是硬件的問題。為你的打印機在
/etc/printcap 設(shè)置文件里設(shè)置記錄文件(使用lf 關(guān)鍵詞)。下面的例子是用lf 為rattan 這臺打
印機設(shè)置記錄文件: 
rattan|line|diablo|lp|Diablo 630 Line Printer:/ 
:sh:sd=/var/spool/lpd/rattan:/ 
FreeBSD 使用手冊
打印機打印打印機收到
CR CR 
CR + LF LF 
第21 頁FreeBSD 使用手冊
:lp=/dev/lpt0:/ 
:if=/usr/local/libexec/if-simple:/ 
:lf=/var/log/rattan.log 
然后試著再打印一次,并檢查記錄文件(在我們的例子里,是/var/log/rattan.log 這個文
件)里是否有出現(xiàn)錯誤信息。然后根據(jù)錯誤信息來解決你的問題。
如果你沒有用lf 指定記錄文件,LPD 默認是/dev/console 將錯誤信息輸出。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 蜜桃视频在线免费播放 | 激情亚洲一区二区三区 | 香蕉秀 | 国产精品久久久久久久亚洲按摩 | 国产亚洲欧美日韩在线观看不卡 | 日本s级毛片免费观看 | 欧美精品一二三区 | 成人三区四区 | 免费看成人毛片 | 国产88久久久国产精品免费二区 | 成人免费福利 | 毛片视频网址 | 日韩精品久久久久久久电影99爱 | 久久久久久亚洲综合影院红桃 | 久久久久久久久久久久网站 | 91在线视频在线观看 | 中文字幕亚洲欧美 | 国产精品视频一区二区三区四区五区 | 成人免费观看毛片 | 久久手机在线视频 | 久久一区国产 | 91av99| 91成人一区二区三区 | 一级在线观看视频 | 国产精品一区在线看 | 一区二区三区日韩电影 | 91精品成人福利在线播放 | sesee99 | 欧美一区二区精品夜夜嗨 | 九色中文字幕 | 日韩视频在线不卡 | 国产精品视频在 | 欧美性久久久 | 成人在线观看免费高清 | 久久国产成人精品国产成人亚洲 | 午夜视频在线免费观看 | av在线免费电影 | 一级做a爰片性色毛片2021 | 成人免费久久 | 成人免费精品视频 | 久久千人斩 |