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


言)打印机,你也确定你决不会将纯文本的资料交给你的打印机打印,且你不会使用其它会
将纯文本送给你的打印机的程序,那么你就不需要阅读这一节 。
但是,如果你需要能处理PostScript 及纯文本的资料,那么你就得对你的打印机再做
一番设置 。我们首先要有一个文字过滤程序可以查出送过来的资料是纯文本还是
PostScript 。所有的PostScript 文件都是%! (对于其它的打印机语言,请参考你的打印机
手册) 如果一份工作的最前面两个字符是这样的话,我们收到的就是PostScript 的工作,
第25 页FreeBSD 使用手册
而我们可以直接把这份工作交给打印机处理 。如果不是的话,那么过滤程序就得把这些文字
转换成PostScript 然后再打印这些结果 。
那我们要怎么设置呢?
如果你是用串行端口上的打印机,有一个好方法就是安装lprps 。lprps 是给PostScript
打印机用的过滤程序,它负责做打印机的双向沟通 。它会将打印机的状态详细的更新到记录
文件里,如此使用者及管理者都可以清楚地看到打印机的状态 。(如果说“toner low”或是
“卡纸”) 。更重要的是,它还包括了一个叫做psif 的程序,如果查出输入的工作是纯文本,
则呼叫textps 这个程序(这是由lprps 所提供的)将纯文本转换成PostScript 。最后,它会
呼叫lprps 将工作送给打印机打印 。
你可以在FreeBSD ports 里找到lprps(请阅读The Ports Collection 这一节) 。当然,
你可以自己取得、编译及安装 。安装lprps 之后,只要指定psif (lprps 的程序之一) 的路
径即可 。如果你从ports 里安装了lprps,那么在/etc/printcap 文件里为串口的PostScript
打印机设置:
:if=/usr/local/libexec/psif:
你应该要使用rw 关键词以告诉LPD 将打印机打开为读写模式 。
如果你是使用接在并口的PostScript 打印机(因此无法使用lprps 和打印机双向沟通),
那么你可以使用下列的shell script 作为文字过滤程序:
#!/bin/sh
#
# psif - Print PostScript or plain text on a PostScript printer
# Script version; NOT the version that comes with lprps
# Installed in /usr/local/libexec/psif
#
read first_line
first_two_chars=‘expr “$first_line” : ‘(..)"‘
if [ “$first_two_chars” = “%!” ]; then
#
# PostScript job, print it.
第26 页FreeBSD 使用手册
#
echo “$first_line” && cat && printf “04” && exit 0
exit 2
else
#
# Plain text, convert it, then print it.
#
( echo “$first_line”; cat ) | /usr/local/bin/textps && printf “04” && exit
0
exit 2
fi
在上面的script 里,textps 这个命令是我们个别安装来将纯文本转成PostScript 的程
序 。你可以使用任何将文字转换成PostScript 程序 。FreeBSD ports 里(请阅读The Ports
Collection) 有一个叫做a2ps 的程序能做文字转成PostScript 的工作,你也许可以试试看 。
11.4.1.3 在没有postscript 的打印机上模拟postscript
PostScript 是高品质打印的de facto 标准 。然而,PostScript 也是一个昂贵的标准 。
值得庆幸的是,在FreeBSD 下有个叫做Ghostscript 的程序能仿真PostScript 工作,这是
由Alladin Enterprises 所发展的免费程序 。Ghostscript 可以读取大部分PostScript 文
件并且将其结果输出至许多不同的设备上,包括许多非PostScript 的打印机 。只要安装
Ghostscript 并为打印机设置一个特殊的文字过滤程序,你可以让你的非PostScript 打印
机接收PostScript 的命令 。
如果你从FreeBSD ports 里安装Ghostscript,那么你一样也可以很快的取得、编译并
安装它 。
要仿真PostScript,我们要有一个过滤程序来判断我们要打印的是不是PostScript 文
件 。如果不是,那么这个文件就直接交由打印机处理;否则,我们得先用Ghostscript 将文

推荐阅读