FreeBSD handbook中文版 11 打印 (2)高级打印机…

2008-02-23 08:01:53来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


# and those programs are allowed to write to stdout, which will
# mess up the printed output. So, we redirect stdout to stderr
# and then make descriptor 3 go to stdout, and have Ghostscript
# write its output there. Exercise for the clever reader:
# capture the stderr output from Ghostscript and mail it back to
# the user originating the print job.
#
exec 3>&1 1>&2
/usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \
第28 页sOutputFile=/dev/fd/3 - && exit 0 ·
#
/usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 -sOutputFile=- - \
&& exit 0
else
#
# Plain text or HP/PCL, so just print it directly; print a form
# at the end to eject the last page.
#
echo $first_line && cat && printf “\033&l0H” && exit 0
fi
exit 2
最后,你需要用if 关键词指定这个过滤程序:
:if=/usr/local/libexec/hpif:
这么一来,你可以输入lpr plain.text 和lpr whatever.ps 而这两者应该都要可以正
确打印。
11.4.1.4 转换用的过滤程序
在完成上面简单的打印机设置这一节所介绍的设置后,下面要做的就是为我们还想要
使用的文件格式(除了ASCII 纯文本外)安装转换用的过滤程序。
11.4.1.4.1 为什么要安装转换用的过滤器?
转换用的过滤程序让打印不同格式的文件变得很简单。举例来说,如果我们常常用TeX
来产生文件,但是我们的打印机是PostScript 的。因此我们不能直接将由TeX 产生的DVI
文件由打印机打出,而要先转换成PostScript 的格式才能输出。这些转换的命令如下:
% dvips seaweed-analysis.dvi
% lpr seaweed-analysis.ps
如果我们安装了DVI 文件的转换程序,那么我们每次要打印时就可以省去自己转换格式
的动作,而交由LPD 自己转。因此,我们要打印DVI 文件时只要这一步就可以了:
% lpr -d seaweed-analysis.dvi
FreeBSD 使用手册
第29 页FreeBSD 使用手册
只要在使用LPD 时加上-d 参数,LPD 就会将DVI 文件转换后再正确的打出。输出格式及
转换的参数这一节里有详细的列出转换用的参数。
对于每一个转换用的参数,我们必需为打印机安装合适的转换用过滤程序,同时在
/etc/printcap 文件里指定该过滤程序。转换用的过滤程序和文字过滤程序很相似(请阅读
安装文字过滤程序这一节),除了它不是打印纯文本而是将文件转换成打印机可以处理的格
式。
11.4.1.4.2 我应该如何使用转换用的过滤程序?
你应该安装你想使用的转换用过滤程序。如果你要打印DVI 资料,那么你应该要安装
DVI 过滤程序。如果你要打印troff 资料,那么你应该要安装troff 过滤程序。
下面这张表整理出可以配合LPD 工作的过滤程序和它们在要设置在/etc/printcap 里的
关键词为何,以及要使用这些过滤程序时在使用lpr 时要加什么参数:
文件格式/etc/printcap 里的关键词lpr 下的参数
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 更多转换用的过滤程序的例子
因为安装过滤程序没有特别固定的方式,所以我们将举多一点例子来说明。这些例子也
许可以作为日后你自己做过滤程序时的参考,或是如果合适的话,你也可以直接拿来用。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:FreeBSD handbook中文版 11 打印 (2)高级打印机设置 B.Header

下一篇:FreeBSD handbook中文版 11 打印 (1)基本设置