欢迎您来到悍铭数据中心,开始互联网之旅!

新闻中心

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

 11.4.1 过滤器 
虽然LPD 负责处理网络通讯设定、队列、访问权限控制、以及其它许多打印相关的工作, 
但最重要的工作还是由过滤程序来做。过滤程序是负责与打印机沟通、处理设备依存关系、 
以及一些其它特殊的需求。我们在之前设置打印机时安装了一个最简单,但是可以和配合大 
部分打印机工作的文字过滤程序(请阅读安装文字过滤程序这一节)。 
然而,如果我们想要更方便地转换格式、统计打印机使用情况、打印特别的打印机字体 
等等,我们应该先了解过滤程序是如何运作的。这些事情都是由过滤程序处理的。不幸的是, 
通常你得自己提供特定的过滤程序。不过值得庆幸的是,有很多一般用途的过滤程序可以用, 
如果没有的话,要自己做应该也很容易。 
FreeBSD 提供了一个过滤程序/usr/libexec/lpr/lpf。这个过滤程序可以让大部分的打 
印机可以打印纯文本(它只处理文件中的倒退字符以及TAB 字符,并不做统计等工作)。在 
FreeBSD 的ports 里也搜集了许多种不同的过滤程序。 
在这一节里,我们将要讨论下面这些东西: 
1. 过滤程序的运作方式这一节将告诉你过滤程序在打印过程中所扮演的角色。你可以了 
解在LPD 使用过滤程序时做了哪些动作。这些知识也能让你将来遇到过滤程序相关的问 
题时能找出问题的针结。 
2. LPD 将所有的打印机都视为可以直接打印纯文本。因此使用PostScript (以及使用其它 
语言) 的打印机就无法直接打出纯文本。在PostScript 打印机上打印纯文本这一节将 
告诉你该怎么做才能解决这个问题。如果你有PostScript 打印机,那么我建议你看看 
这一节。 
第22 页FreeBSD 使用手册 
3. PostScript 是一种受欢迎的输出格式。有些人(包括我)直接撰写PostScript 的程序代 
码。但是PostScript 打印机很贵。用非PostScript 打印机仿真PostScript 打印机这 
一节告诉你如何进一步修改打印机的文字过滤程序使得非PostScript 打印机也能打印 
PostScript 的资料。如果你没有PostScript 打印机,我建议你看看这一节。 
4. 转换用的过滤程序这一节说明如何让特殊的文件格式转换自动化,比如将图形或排版 
的资料转换成你的打印机所能了解的。读完这一节后,你应该可以用lpr -t 命令打印 
troff 资料,或是用lpr -d 命令打印TeX DVI 资料,或是用lpr -v 命令打印raster 
影像资料,等等。我建议阅读这一节。 
5. 输出用的过滤程序这一节说明一个LPD 不常用的功能:输出用的过滤程序。除非你要 
打印header pages(请阅读Header Pages),不然你可以略过这一节。 
6. 文字过滤程序:lpf 这一节介绍lpf 命令。这是由FreeBSD 提供给一般的行式打印机(或 
类似行式打印机的激光打印机)使用的简单文字过滤程序。如果你希望可以快速的设置 
打印机对打印纯文本的使用情况的统计,或是你想要消除打印机对倒退字符的错误打 
印,那么你应该考虑使用lpf 命令。 
11.4.1.1 过滤器如何工作 
上面曾经提到,过滤程序是一个由LPD 运行处理打印机与通讯端口间沟通的程序。 
当LPD 要打印文件时,它会执行过滤程序,同时从过滤程序的标准输入要打印的文件,而将 
过滤程序的标准输出给打印机打印,并将过滤程序的错误记录下来(在/etc/printcap 以lf 
关键词设置,或是使用默认的/dev/console)。 
LPD 要使用哪个过滤程序或是要给过滤程序哪些参数是由/etc/printcap 文件以及使用 
者给lpr 命令的参数决定的。举例来说,如果使用者输入lpr -t,那么LPD 将会使用由tf 
关键词为特定打印机所指定的troff 过滤程序。如果使用者想打印的是纯文本,那么LPD 
将会使用由if 所指定的(大部分的时候是这样子的,详情请阅读输出用的过滤程序这一 
节。 
在/etc/printcap 文件里你可以设置三种不同种类的过滤程序: 
1. 文字过滤程序,在LPD 的文件中常称为输入用过滤程序。通常将它作为默认的过滤程序, 
负责处理一般的文字打印。LPD 将所有打印机都视为可以直接打印纯文本,所以这个过 
滤程序的任务就是将打印机无法处理的字符及格式,转换为打印机所能处理的。如果你 
第23 页FreeBSD 使用手册 
需要做打印情况的统计,那么过滤程序必需要计算总行数及每页行数来统计页数。使用 
文字过滤程序的方式为: 
filter-name [-c] -wwidth -llength -iindent -n login -h host acct-file 
其中 
-c 
如果工作以lpr -l 命令送出, 那么就会有这个参数 
width 
值是由/etc/printcap 文件中的pw (每页的字符宽度)关键词所指定的。默认为 
132。 
length 
是由pl(每页的行数)关键词所指定,默认为66。 
indent 
是由lpr -i 命令所指定的缩进字数,默认是0。 
login 
是打印该文件的使用者帐户名称。 
host 
是送出工作的机器名称。 
acct-file 
是由af 关键词所指定的统计数据文件名称。 
2. 转换用的过滤程序负责将指定文件格式转换成打印机可以打出的格式。举例来说 
ditroff 排版资料无法直接交由打印机打印,不过你可以安装负责转换ditroff 文件的 
过滤程序将ditroff 资料转换成打印机可以打印及处理的格式。转换用的过滤程序这一 
节将会有更详细的说明。如果你需要做打印情况的统计,那么转换用的过滤程序也需要 
做统计的工作。使用转换用的过滤程序的方式为: 
filter-name -xpixel-width -ypixel-height -n login -h host acct-file 
其中pixel-width 是由px 关键词所指定(默认为0) 而pixel-height 是由py 关键词所 
指定(默认为0)。 
第24 页FreeBSD 使用手册 
3. 输出用过滤程序是当你没有文字过滤程序,或是要打印header pages 时才使用。在我 
的经验里,输出用过滤程序是很少用到的。输出用的过滤程序这一节将介绍这些过滤 
程序。

香港云主机