2 FreeBSD handbook中文版 11 打印 高级打印机设置 A.过滤器( 二 )


LPD 要使用哪个过滤程序或是要给过滤程序哪些参数是由/etc/printcap 文件以及使用
者给lpr 命令的参数决定的 。举例来说,如果使用者输入lpr -t,那么LPD 将会使用由tf
关键词为特定打印机所指定的troff 过滤程序 。如果使用者想打印的是纯文本,那么LPD
将会使用由if 所指定的(大部分的时候是这样子的,详情请阅读输出用的过滤程序这一
节 。
在/etc/printcap 文件里你可以设置三种不同种类的过滤程序:
1. 文字过滤程序,在LPD 的文件中常称为输入用过滤程序 。通常将它作为默认的过滤程序,
负责处理一般的文字打印 。LPD 将所有打印机都视为可以直接打印纯文本,所以这个过
滤程序的任务就是将打印机无法处理的字符及格式,转换为打印机所能处理的 。如果你
第23 页FreeBSD 使用手册
需要做打印情况的统计,那么过滤程序必需要计算总行数及每页行数来统计页数 。使用
文字过滤程序的方式为:
filter-name [-c] -wwidth -llength -iindent -n login -h host acct-file
其中
-c
如果工作以lpr -l 命令送出,那么就会有这个参数
width
值是由/etc/printcap 文件中的pw (每页的字符宽度)关键词所指定的 。默认为
132 。
length
是由pl(每页的行数)关键词所指定,默认为66 。
indent
是由lpr -i 命令所指定的缩进字数,默认是0 。
login
是打印该文件的使用者帐户名称 。
host
是送出工作的机器名称 。
acct-file
是由af 关键词所指定的统计数据文件名称 。
2. 转换用的过滤程序负责将指定文件格式转换成打印机可以打出的格式 。举例来说
ditroff 排版资料无法直接交由打印机打印,不过你可以安装负责转换ditroff 文件的
过滤程序将ditroff 资料转换成打印机可以打印及处理的格式 。转换用的过滤程序这一
节将会有更详细的说明 。如果你需要做打印情况的统计,那么转换用的过滤程序也需要
做统计的工作 。使用转换用的过滤程序的方式为:
filter-name -xpixel-width -ypixel-height -n login -h host acct-file
其中pixel-width 是由px 关键词所指定(默认为0) 而pixel-height 是由py 关键词所
指定(默认为0) 。
第24 页FreeBSD 使用手册
3. 输出用过滤程序是当你没有文字过滤程序,或是要打印header pages 时才使用 。在我
的经验里,输出用过滤程序是很少用到的 。输出用的过滤程序这一节将介绍这些过滤
程序 。输出用过滤程序只接收两个参数,如下所示:
filter-name -wwidth -llength
参数-w 和-l 的意思和文字过滤程序中的意思是一样的 。
而过滤程序也应该要以下列的结束码结束程序:
exit 0
如果过滤程序成功地把文件打出 。
exit 1
如果过滤程序打印失败了而想要让LPD 再呼叫一次过滤程序重新打印,那么就以这
个值结束 。LPD 收到这个值之后,就会再重试打印 。
exit 2
如果过滤程序打印失败且不想再尝试了,那么就以这个值结束 。LPD 收到这个值将
不会再重试同时放弃打印这个文件 。
FreeBSD 里提供的过滤程序:/usr/libexec/lpr/lpf 利用每页字符宽度及每页行数来判
断什么时候要送出form feed 字符以及统计打印机打印情况 。而以使用者帐户、机器以及统
计资料文件来记录打印的情况 。
如果你想要购买过滤程序,得先了解它们是否兼容于LPD 。如果要兼容的话,它们必需
能处理上面所列的参数 。如果你想要自己写过滤程序来用,那么它们一样要处理上面所列的
参数以及程序结束码 。
11.4.1.2 在postscript 打印机上打印纯文本
如果你的计算机只有你一个人在用而且你使用的是PostScript (或是其它的打印机语

推荐阅读