FreeBSD handbook中文版 11 打印 (2)高级打印机…
2008-02-23 08:01:53来源:互联网 阅读 ()
参数-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 (或是其它的打印机语
言)打印机,你也确定你决不会将纯文本的资料交给你的打印机打印,且你不会使用其它会
将纯文本送给你的打印机的程序,那么你就不需要阅读这一节。
但是,如果你需要能处理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 “\004” && exit 0
exit 2
else
#
# Plain text, convert it, then print it.
#
( echo “$first_line”; cat ) | /usr/local/bin/textps && printf “\004” && 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 将文
件转换成打印机可以处理的。
这里有一个例子:下面的script 是给Hewlett Packard DeskJet 500 打印机用的文字
过滤程序。如果是其它的打印机,将gs (Ghostscript)命令的-sDEVICE 参数换成你能使用
的设备即可。(你可以用gs -h 这个命令得到目前系统安装的Ghostscript 支持哪些设备)。
第27 页FreeBSD 使用手册
#!/bin/sh
#
# ifhp - Print Ghostscript-simulated PostScript on a DeskJet 500
# Installed in /usr/local/libexec/hpif
#
# Treat LF as CR LF:
#
printf “\033&k2G” || exit 2
#
# Read first two characters of the file
#
read first_line
first_two_chars=‘expr “$first_line” : ‘\(..\)’‘
if [ “$first_two_chars” = “%!” ]; then
#
# It is PostScript; use Ghostscript to scan-convert and print it.
#
# note that PostScript files are actually interpreted programs,
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- FreeBSD handbook中文版 11 打印 (1)基本设置 2008-02-23
- FreeBSD handbook中文版 11 打印 (2)高级打印机设置 B.Heade 2008-02-23
- FreeBSD handbook中文版 11 打印 (3)使用打印机 2008-02-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
