Mark Komarinski <markk@auratek.com> 指出:
非常感谢 Matt Foster 重写这份 HOWTO。我尽量保留他的内容,并作出必要的增删润饰。
Matt Foster <mwf@engr.uark.edu> 指出:
这份 Linux Printing HOWTO 完全改写了Grant Taylor <grant@god.tufts.edu> 和 Brian
McCauley <B.A.McCauley@bham.ac.uk> 的原文。本来我打算保留 Grant 和 Brian 原来 HOWTO
中的材料,但後来几乎全部改写并增加了许多新材料。我认为这份 HOWTO 中的材料比较完整,
也比较容易阅读。我希望您同意我的看法。
v1.2.2
这份文件中提到的有些名字是某些人的版权和(或)商标名称。这些名字在这份 HOWTO
中以全名或缩称出现。
(c) 1995 Matt Foster (mwf@engr.uark.edu)
任何涉及 Linux HOWTO 的翻译和作述均需载列这份版权说明。
换言之,如在此种作述中限制他人引用与 HOWTO 有关的内容就不得引用这份 HOWTO。在某些情况下,
可以有例外情况,但需与下址 Linux HOWTO 协调员联系。
简言之,即使这份文件尽量四处流通,但HOWTO 文件的版权还得保留,同时希望知道这份 HOWTO 文件的
流通情况。
任何问题均请与 Linux HOWTO 协调员 Tim Bynum 联系。他的地址是 <linux-howto@sunsite.unc.edu>。不妨从他的地址查询电话号码和其他联系资料。
欢迎对本文提出建议和批评,来信请寄
<markk@auratek.com>。
非常感谢对本文初版提出许多宝贵意见的朋友 --- 有些建议已经列入本文。
我也要感谢最初改写本文的 Matt Foster 先生。
本节说明在 Linux 环境中如何打印文件、检查列印队列、从列印队列删除打印任务、
打印前文档排版和设置打印环境等。
由于安全上的考量,只有 root 和属於打印监控程式的同一群组的使用者才可书写到打印机,
使打印机进行打印。这就是必需使用 lpr、lprm 和 lpq 等指令才能使用打印机的理由。
因此,使用者必需使用 lpr 列印文档。lpr 为打印进行所有初始设定,
然後将任务交给打印监控程序 - lpd。这个打印监控程序随即告知打印机如何打印文档。
在 lpr 执行过程中,它首先将有待打印的文档抄到一个目录(假脱机目录),
然後让该文档留在该目录中等待 lpd 进行打印。一旦 lpd 得知有文档等待打印,
它就自行生成一个备份(编程员称为派生(forking))。这个派生的 lpd 监控程序就会打印有待打印的文档,
同时原 lpd 仍继续等待後面可能发出的打印指令。通过这种方式,Linux 系统可同时处理列队打印任务。
使用 lpr(1) 指令的语法如下:
关於 lpr 使用的所有选项参数,见 lpr(1)。
lpq 的结果有许多用途。
如果接连的打印机是激光打印机,打印图像就比较简单,因为多数激光打印机都于 PCL 兼容。
如果不兼容,也可利用 NetPBM 等软件将图像转换成 PCL 格式。
最後一种办法就是使用 Ghostscript (见下节)。
打印图像的最好办法是安装 NetPBM 和 Ghostscript 等软件,然後安装 magic filter 自动处理图像档。
Ghostscript 的任务就是将 PostScript 档中的所有排版指令转换成打印机能够执行的指令。
利用 Ghostscript 打印 PostScript 档,可能需要利用下列指令:
此处讨论在他处没有论及的问题。
Q1. 打印时如何消除“台阶”现象?
A1. 有些打印机得每行给结束符,否则就会出现打印的台阶现象。
打印机预期的结束符是回车/新行符(DOS 系统),而 UNIX 系统在结束一行时只加一个新行符。
解决这个问题的最简便办法是检查是否可用某种开关控制打印机,使其能在这两种打印之间转换,
有时可用一个 DIP 开关,或可在打印前先发送一个换码信号。如要采用第二种办法,
得先设立一个过滤器(见 Q2)。
最快的解决办法是在指令行使用过滤器。例如:
Q2. 什麽是过滤器?
A2. 过滤器是一套软件,它可从标准输入(stdin)读入资料,然後对读入的资料进行动作,
再以标准输出(stdout)写出。过滤器的用处□多,包括可用于文本处理。
Q3. 什麽是魔术过滤器(magic filter)?
A3. 魔术过滤器是一种根据文档的种类采取行动的过滤器。例如,如果文档是没有排版格式的文本文档时,
则利用一般打印方式打印。如果文档是 PostScript 文档或其他格式文档,则用其他方式打印
( ghostscript )。常用的魔术过滤器有 magicfilter
和 APSfilter。使用这类过滤器的一项要点是在安装过滤器之前必需先安装应用软件。
需要注意这项要点的理由是在安装 magicfilter 时,这个魔术过滤器会查询系统中装有何种打印程序
(例如 ghostscript,如果找到 ghostscript,则 magicfilter 就知道它能处理 PostScript
格式的文档),然後根据找到的打印程序作出相应的设定。如果系统要处理所有打印文档,
可能至少得安装下列程序:
Q4. 何谓 Windows 打印系统(WPS)?Linux 能用这个打印系统吗?
A4. 也许。只接受 WPS 指令的打印机无法用于 Linux 系统。接受 WPS 指令和其他打印指令的打印机
(如 Canon BJC 610 打印机)就可使用,只要将其设置成 WPS 格式以外的格式即可。其他打印机,
例如有些 HP DeskJet 820Cxi/Cse 打印机就*无法*用于 Linux。不过,尽管如此, Linux 可作为
Win95 机器的打印伺服器(见 Samba),因为 Win95 有这些打印机的驱动程序。
Q5. 这个系统怎麽这麽烂?只能打印 6 页,超过 6 页就显示“file too large (文档太长)”。
A5. 在 /etc/printcap 档中有一个参数与打印的文档长度有关。默认值是 1000 盘区(约 500 k)。
对 PostScript 这类文档而言,这大约是 7-8 页左右的长度。因此务必在打印机的设定中加入下列内容:
如果打印机不打印:
在 USENET 上提问时,考虑下列问题:
如果上述问题已有答案,那就最好不要在网上提问。如果仍要提问,应该列入与问题有关的资料。
如果提出“我的 lpr 有问题,请帮忙”这类问题,可能没人会理会。最好还要列入内核版本、
不打印的情况是如何发生的和尽可能提供系统显示的具体错误信息。