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


11.4.5.2 如何统计有几页被打印?
为了要能精确统计打印的情况,你必须要能得知每个工作用了几张纸 。这是打印机使用
情况统计最基本的问题 。
对于纯文本的工作,这个问题并不难解决:你只要统计这个工作里有几行并知道你的打
印机一张纸可以印几行就行了 。别忘了考虑倒退字符以及因为同一行字符过多而换行的情
况 。
lpf 文字过滤程序(在文字过滤程序:lpf 这一节里介绍的)在做统计时会将这些情况都
考虑进去 。如果你要自己撰写有统计功能的文字过滤程序,你可以参考lpf 的原始码 。
那么要如何统计其它格式的文件呢?
对于DVI 转成LaserJet 或DVI 转成PostScript,你可以让你的过滤程序处理由dvilj 或
dvips 的输出以判断一共转换了几页 。你也许可以用类似的方式来处理其它的文件格式以转
换程序 。
但是这样的方法所计算出来的和打印机实际打出来的可能不大相同,举例来说,打印机
可能会卡纸、用完色带碳粉或墨水、或是其它的故障—而这些使用者仍然需要付费 。
那么,我该怎么办?
只有一种方式肯定是可以做出精确的统计 。买一台可以告诉你一共打出多少纸张的打印
机,同时将它接在串行端口或是以网络连接 。几乎所有的PostScript 打印机都支持这个功能 。
当然其它种类的打印机也有支持的(如网络Imagen 激光打印机) 。为这些打印机修改你的过
滤程序,使得过滤程序在打印完成后可以从打印机取得这些信息,同时也只根据这些记录来
做统计 。不需要做行数统计或是其它可能发生错误的计算方式 。当然,你也可以大方的让所
有的纸张打印输出都免费 。

推荐阅读