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


cifplot cf
DVI df
plot gf
ditroff nf
FORTRAN text rf
troff rf
raster vf
if plain text
在我们的例子里,使用lpr -d 意思就是说打印机会需要用到/etc/printcap 文件里由
df 关键词所指定的过滤程序 。
不管别人怎么说,像FORTRAN 或是plot 的资料可能都已经用不到了 。在你的机器上,
你可以安装其它格式的过滤程序,如此一来你就可以将那些转换用的参数用来转换其它的
格式 。举例来说,你希望可以直接打印Printerleaf 文件(由Interleaf desktop publishing
program 产生的),而你用不到plot 文件 。那么你可以用gf 关键词指定Printerleaf 的转
第30 页
-c
-d
-g
-n
-f
-f
-v
none, -p 或-l FreeBSD 使用手册
换用过滤程序 。同时告诉你的使用者lpr -g 命令就是“打印Printerleaf 文件” 。
11.4.1.4.3 安装转换用的过滤程序
转换用过滤程序不属于FreeBSD 本身的程序,因此它们可能被放在/usr/local 目录下 。
通常我们可以将它们放在/usr/local/libexec 目录下,因为这些程序是专门给LPD 运行的,
一般使用者并不会需要去直接执行它们 。
要使用转换用过滤程序,只要将过滤程序的路径放在/etc/printcap 设置文件里用合适
的关键词指定即可 。
在我们的例子里,我们将为名为bamboo 的打印机设置一个DVI 转换过滤程序 。以下是
/etc/printcap 这个文件,其中打印机bamboo 使用了df 关键词 。
#
# /etc/printcap for host rose - added df filter for bamboo
#
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:rw:
:if=/usr/local/libexec/psif:
:df=/usr/local/libexec/psdf:
而DVI 过滤程序是一个shell script:/usr/local/libexec/psdf 。以下是它的原始代
码:
#!bin/sh
#
第31 页FreeBSD 使用手册
# psdf - DVI to PostScript printer filter
# Installed in /usr/local/libexec/psdf
#
# Invoked by lpd when user runs lpr -d
#
exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps “$@”
这个script 以过滤模式执行dvips (参数-f) 在标准输入读入要打印的工作以处理 。
然后激活PostScrpt 打印机文字过滤程序lprps 同时也将LPD 传给这个script 的参数传给
该过滤程序(请阅读在PostScript 打印机上打印纯文本)这一节 。lprps 将根据这些参数来
统计打印的页数情况 。
11.4.1.4.4 更多转换用的过滤程序的例子
因为安装过滤程序没有特别固定的方式,所以我们将举多一点例子来说明 。这些例子也
许可以作为日后你自己做过滤程序时的参考,或是如果合适的话,你也可以直接拿来用 。
下面这个例子是一个将raster 资料(嗯,其实只能给GIF 文件使用)转成Hewlett
Packard LaserJet III-Si 打印机所能处理的过滤程序:
#!/bin/sh
#
# hpvf - Convert GIF files into HP/PCL, then print
# Installed in /usr/local/libexec/hpvf
PATH=/usr/X11R6/bin:$PATH; export PATH
giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300
&& exit 0
|| exit 2
它先将GIF 格式转成portable anymap,然后再转成portable graymap,接着再转成
portable bitmap,最后再转成与LaserJet/PCL 兼容的资料 。
第32 页FreeBSD 使用手册
下面是使用这个过滤程序的/etc/printcap 例子:
#
# /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:
:vf=/usr/local/libexec/hpvf:
下面的转换用过滤程序是将由grpff 排版系统所产生的troff 资料转成让PostScript
打印机bamboo 所能打印的格式:

推荐阅读