1 FreeBSD handbook中文版 11 打印 基本设置( 八 )


lp 关键词指定的通讯端口 。因此过滤程序必需要能从标准输入读入要打印的东西,做适当
的处理后,将结果从标准输出送出 。而这些输出就会被打出来 。请参考过滤程序的运作方式
这一节以更进一步的了解过滤程序 。
在我们的打印机设置里,文字过滤程序可能只是一个执行/bin/cat 命令的shell script
将工作送给打印机 。FreeBSD 里有一个叫做lpf 的过滤程序能处理倒退、底线等打印机可能
无法正确处理的资料 。当然,你也可以用任何你想用的过滤程序 。关于lpf 这个过滤程序在
文字过滤程序:lpf 这一节里有更详细的说明 。
首先,让我们做一个简单的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
然后要让这个文件可执行:
# chmod 555 /usr/local/libexec/if-simple
同时,在/etc/printcap 设置文件里用if 关键词告诉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,然后重新启动电脑或只运行lpd:
lpd_enable="YES"
# lpd
11.3.1.4.8 测试
你已经把LDP 需要的设置都完成了 。不过,我们需要测试看看这些设置是否可以正确地
工作 。测试的方法就是打出一些东西 。如果要用LPD 系统来打印,我们可以使用lpr 这个命
令来送出一些打印工作 。
你可以使用检查打印机连接状况这一节里介绍的lpr 及lptest 来产生一些测试文字 。
测试LPD 设置:
第17 页FreeBSD 使用手册
输入:
# lptest 20 5 | lpr -Pprinter-name
其中printer-name 是/etc/printcap 里的某一台打印机名称或别名 。如果要测试默认
的打印机,那么在执行lpr 命令时不要指定-P 这个参数 。再一次的提醒,如果你要测试的
是PostScript 打印机,那么请传送PostScript 程序给打印机,而不要用lptest 。你可以
将程序放在一个文件里然后输入lpr file 。
如果是PostScript 打印机,你应该会得到程序输出的结果 。如果你是用lptest 的话,
那么你的结果看起来应该是下面这个样子:
!”#$%&’()* ,-./01234
“#$%&’()* ,-./012345
#$%&’()* ,-./0123456
$%&’()* ,-./01234567
%&’()* ,-./012345678
如果要做更进一步的测试,你可以下载更大的程序(给某个特定打印机语言的打印机使
用)或是在执行lptest 时加一些额外的参数 。例如lptest 80 60 将会产生60 行每行80 个
字符的测试数据 。
如果打印机并没有反应,请参考疑难解答这一节 。
11.3.1.4.9 疑难解答
用lptest 做过简单的测试后,你可能会遇到下列的问题 。打印机打了一阵子,但是并
没有输出任何结果 。
打印机打出上面所列的东西,但是没多久就停了 。这时,你可能需要按打印机上的PRINT
REMAINING 或FORM FEED 钮才看得到输出的结果 。
如果是这种情况的话,打印机在打印前可能在等待是否还有更多的资料要打印 。要解决

推荐阅读