FreeBSD handbook中文版 11 打印 (2)高级打印机…
2008-02-23 08:01:53来源:互联网 阅读 ()
下面这个例子是一个将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 所能打印的格式:
#!/bin/sh
#
# pstf - Convert groff’s troff data into PS, then print.
# Installed in /usr/local/libexec/pstf
#
exec grops | /usr/local/libexec/lprps “$@”
上面的script 再一次使用lprps 与打印机沟通。如果我们的打印机接在并口上,那么
我们可以用下面这个script 取代上面的script:
#!/bin/sh
#
# pstf - Convert groff’s troff data into PS, then print.
# Installed in /usr/local/libexec/pstf
#
exec grops
而如果要使这个过滤程序,我们在/etc/printcap 里的设置:
第33 页FreeBSD 使用手册
:tf=/usr/local/libexec/pstf:
这里有一个让熟悉FORTRAN 的老手惭愧的例子。这是一个让所有可以打印纯文本的打印
机打出FORTRAN-text 的过滤程序。我们将在teak 这台打印机上安装:
#!/bin/sh
#
# hprf - FORTRAN text filter for LaserJet 3si:
# Installed in /usr/local/libexec/hprf
#
printf “\033&k2G” && fpr && printf “\033&l0H” && exit 0
exit 2
我们只要将这个过滤程序在/etc/printcap 文件里指定给teak 这台打印机即可:
:rf=/usr/local/libexec/hprf:
最后一个有点复杂的例子。我们要为先前提到的teak 这台打印机新增一个可以将DVI
转成激光打印机能处理的格式。首先,先修改/etc/printcap 文件中关于DVI 过滤程序的位
置:
:df=/usr/local/libexec/hpdf:
然后,我们要做出这个过滤程序。我们需要一个能将DVI 转成激光打印机PCL 格式的程
序。FreeBSD port 里(请参考The Ports Collection 这一节)有一个:dvi2xx 是这个程序的
名称。安装这个程序能提供我们dvilj2p 这个能将DVI 转成LaserJet IIp、LaserJet III
以及LaserJet 2000 兼容的格式。
dvilj2p 这个程序使得hpdf 这个过滤程序变得十分的复杂,因为dvilj2p 无法从标准
输入取得资料。它得从文件中读资料。最糟糕的是,这个文件还必需以.dvi 结尾,所以用
/dev/fd/0 作为标准输入是不行的。我们可以用symblic link 产生一个暂时的文件名
(以.dvi 结尾)指向/dev/fd/0 ,然后强迫dvilj2p 从标准输入读取资料。
第34 页FreeBSD 使用手册
另一个问题就是我们无法用/tmp 来存放我们暂时的连接。Symbolic links 的使用者及
群组为bin。而过滤程序是以使用者daemon 的身份在执行。又/tmp 目录设置了sticky bit。
因此虽然过滤程序建立了连接,但是因为这个连接属于其它的使用者而无法删除。
因此,过滤程序将会把symbolic link 建立在目前的目录下,也就是spooling 目录(由
/etc/printcap 文件中的sd 关键词所指定)。这是让过滤程序来做这件事最好的地方,因为
(通常)这里的可用空间会比/tmp 下来得多。
所以,这个过滤程序应该要这么写:
#!/bin/sh
#
# hpdf - Print DVI data on HP/PCL printer
# Installed in /usr/local/libexec/hpdf
PATH=/usr/local/bin:$PATH; export PATH
#
# Define a function to clean up our temporary files. These exist
# in the current directory, which will be the spooling directory
# for the printer.
#
cleanup() {
rm -f hpdf$$.dvi
}
#
# Define a function to handle fatal errors: print the given message
# and exit 2. Exiting with 2 tells LPD to do not try to reprint the
# job.
#
第35 页FreeBSD 使用手册
fatal() {
echo “$@” 1>&2
cleanup
exit 2
}
#
# If user removes the job, LPD will send SIGINT, so trap SIGINT
# (and a few other signals) to clean up after ourselves.
#
trap cleanup 1 2 15
#
# Make sure we are not colliding with any existing files.
#
cleanup
#
# Link the DVI input file to standard input (the file to print).
#
ln -s /dev/fd/0 hpdf$$.dvi || fatal “Cannot symlink /dev/fd/0”
#
# Make LF = CR LF
#
printf “\033&k2G” || fatal “Cannot initialize printer”
#
# Convert and print. Return value from dvilj2p does not seem to be
# reliable, so we ignore it.
第36 页#
dvilj2p -M1 -q -e- dfhp$$.dvi
#
# Clean up and exit
#
cleanup
exit 0
11.4.1.4.5 自动转换:用过滤程序转换外的另一种选择
上面这些过滤程序完整地建立了你的打印环境,但是使用者们必需自己决定要使用哪一
个过滤程序(对lpr 命令下的参数)。如果你的使用者们并不擅长于使用计算机,要它们自己
选择适当的过滤程序来使用可能会造成它们的困扰。更严重的是,万一使用到不正确的过滤
程序来转换格式,那么可能会让你的打印机浪费许多不必要纸。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系: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
