30 FreeBSD连载:配置打印机( 二 )


sd(spool Directory)定义这个打印机使用的缓冲区目录,这个目录一般放在/var/spool的下面,并拥有合适的权限设置,以使得打印系统能正确处理缓冲区 。系统缺省使用/var/spool/lpd目录来放置要打印的文件,不同的打印机应使用这个目录下的不同子目录,习惯上这个目录名与前面定义的打印机名字相一致 。
lf(log file)定义与这个打印机相联系的日志文件,记录出现的错误信息,习惯上放在/var/log目录下 。
mx(maximum size)定义缓冲区中打印文件的最大尺寸,单位为千字节,缺省值为0,表示不限制打印文件的大小 。
if(input filter)定义一个输入打印过滤器,过滤器程序用于将用户打印作业的格式转变为打印机能够识别的格式 。
of(output filter)定义输出过滤器,这也是一个打印过滤器,习惯上使用if的多些,使用of的少些 。如果if和of都没有定义,打印系统则使用缺省的过滤器/usr/libexec/lpr/lpf 。
sh(suppress header),不打印标题页 。
mc(maximum coyIEs)定义最大的打印份数,缺省为0不限制打印份数 。
br(baud rate)定义串口波特率,只有在使用串口打印机时才有用 。
当将prinrcap文件设置正确之后,就能够使用打印命令lpr来打印文本文件了,由于没有设置打印中文或图形的过滤器,打印系统只能打印英文文件,它将处理过的文件直接发送到打印机上进行打印 。
在PostScript打印机上打印
大多数打印机不但能打印字符,也能够打印图形,应用软件通过输出控制字符对打印机进行控制 。这些控制字符就被称为打印机控制语言 。为了将字符和图形文件输出到打印机上,就需要过滤器将打印文件转化为打印机识别的打印语言 。
打印过滤器是打印程序的一个重要部分,使Unix的打印系统更为灵活,从而能适合各种不同的打印机 。除了将文档转换为打印机识别的语言之外,还可以对要打印的文件做其他处理,例如某些行式打印机需要文档同时使用回车和换行,而Unix的文本文件只使用换行,此时直接打印文档就会造成行列不齐,这些情况下就需要一个过滤器进行转换 。
打印机控制语言可以分为两类,一种将操纵打印机进行绘图的命令及其他控制命令通过特殊字符(或特殊字符引导的命令)来表示,对普通字符文件不作处理,直接发送到打印机 。此时普通英文字符文件可以直接发送到打印机上打印,但要打印包括图形在内的文件就是包括特殊控制字符的二进制文件,不能用文本方式进行查看 。另一种为Postscript语言,它使用页面描述语言来描述要打印的内容,可以直接打印的文件就是一个符合一定语法规则的文本文件,因此对于一个PostScript打印机来讲,一个普通文本文件只是一个不合乎语法的PostScript语言文件,不能被直接打印 。
因此如果要在仅支持PostScript的打印机上打印普通文档,也必须使用识别PostScript的过滤器进行转换,首先将普通文本文件转换为PostScript语言,再发送给PostScript打印机进行打印 。FreeBSD的Packages Collection中专门有一个类别print,提供了很多打印相关的软件包,其中包括很多种将文本文件转换为PostScript文件的过滤器程序,如a2ps等 。其中gb2ps能将GB编码的文本转换未内嵌中文的PostScript文件,从而能在PostScript打印机上将中文文件打印出来 。
因此首先应该安装这些转换软件包,当安装了这些转换程序之后,最简单的使用方式是先使用他们将文档转换为Postscript文件,再发送给打印命令lpr,这可以通过管道来实现 。一些打印工具内部就包括了使用管道,自动将生成的Postscript数据发送给lpr命令的指令,下面的a2ps指令就直接将PostScript文件发送给lpr命令 。

推荐阅读