2 FreeBSD handbook中文版 11 打印 高级打印机设置 B.Header Pages( 二 )


如果你希望LPD 打印short header,那么在/etc/printcap 文件里使用sb (short banner)
即可 。这样打出来的header page 看起来会像下面这个样子:
rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995
LPD 的默认值是先打印header page 再打印工作 。如果你想要调换顺序,那么在
/etc/printcap 里使用hl (header last) 即可 。
11.4.2.3 统计打印
如果我们打印LPD 内建的header pages,那么在做统计时可能会遇到一个问题:header
pages 得免费提供 。为什么?因为只有控制打印header page 的输出用过滤程序可以在打印
header pages 时做打印统计,但是这个过滤程序却没有使用者及机器的资料或是一个统计资
料文件,所以无法向使用者收钱 。我们也不能在文字过滤程序或是转换用过滤程序(这些过
滤程序可以直接取得使用者及机的资料)将统计结果都“多加上一页”,因为使用者可以用
lpr -h 命令设置不要打印header page,而你可能就向这些使用者多收了打印header page 的
费用 。基本上,lpr -h 是许多较环保的使用者喜好的参数,你无法鼓励别人不去使用它 。
而修改每个过滤程序使它们都可以打出header page 也是不可行的(虽然这么做就可以正
确的计费) 。因为LPD 并不会把使用者有没有使用-h 的信息传给过滤程序,这么一来,即
使使用者下了lpr -h 的命令要求不打印header page,它仍然会因为得到一张header page 而
多收取了这个费用 。
那么,有什么好办法呢?
你可以:
1. 接收LPD 的缺点,不收取打印header page 的费用 。
2. 安装可以取代LPD 的程序,比如说LPRng 或是PLP 。请参考标准Spooler 之外的选择
这一节所介绍其它可以替代LPD 的程序 。
3. 撰写一个聪明的输出用过滤程序 。在打印header page 及纯文本时,如果没有文字(输入
用)过滤程序,那么一般的输出用过滤程序只做初始化打印机以及一些简单的字符转换
工作 。如果有设置文字过滤程序,那么LPD 只会用输出用过滤程序来做打印header page
的工作 。事实上,输出用过滤程序可以根据从LPD 产生的header page 资料来判断打印
工作的使用者及机器而加以收费 。唯一的问题就是输出用过滤程序会无法取得记录使用
情况的记录文件(由af 关键词所指用的记录文件不会被传入),但是如果你的记录文件
是固定的,你可以这个文件直接设置在输出用过滤程序里 。如果你考虑要用这种方式来
第42 页FreeBSD 使用手册
处理的话,那么在/etc/printcap 文件使用sh (short header) 关键词使判断的工作较容
易 。上述的做法其实可能是很麻烦的,比较起来,使用者应该会较感谢让打印header page
免费的管理者 。
# Check arguments
#
11.4.2.4 在postscript 打印机上打印header pages
前面提到LPD 可以为打印机产生合适的纯文本header page,当然,因为PostScript 不
能直接打印纯文本,所以LPD 产生header page 的工能在PostScript 打印机上是用不到的—
或是几乎用不到 。
一个直接产生header page 的方法是让所有的转换用过滤程序及文字过滤程序产生
header page 。过滤程序可以让使用者及机器的参数产生合适的header page 。这个方法的缺点
就是即使使用者以lpr -h 的方式送出工作,它们仍然会得到header pages 。
让我们来试试这个方法 。下面的script 可以接收三个参数(使用者名称、机器名称以及
工作名称)并产生PostScript 打印机能打印的header page:
#!/bin/sh
#
# make-ps-header - make a PostScript header page on stdout
# Installed in /usr/local/libexec/make-ps-header
#
#
# These are PostScript units (72 to the inch). Modify for A4 or
# whatever size paper you are using:

推荐阅读