基于OpenBSD的基本打印

2020-09-21 02:49:02

我旁边的架子上有一台大约有十年历史的HL-5370DW兄弟打印机,这台打印机主要是我妻子用来打印缝纫图案的。当我学习计算机科学时,我有时会打印我写的文件来校对。我经常能够找到我在屏幕上看不到的打字错误,即使在校对了两三次之后也是如此。然而,我没有费心把我的学士论文打印出来。仅仅为了校对而印刷120页对我来说似乎是一种浪费。我在屏幕上非常仔细地校对,没有人抱怨打字错误。(这并不意味着没有。)。

完成学业后,我几乎从不打印文件。然而,我仍然更喜欢在纸上阅读长篇文本,而不是在屏幕上。因此,我经常买平装或精装的技术书籍,而不是电子书。如果我购买内容苛刻的电子书,我会打印出来供离线阅读。

在为我的私人计算改用OpenBSD后,我的阅读习惯更多地转向了手册页。当我需要弄清楚OpenBSD是如何工作的时候,在很多情况下,Apropos(1)比Google更适合作为起点。有些手册页非常长,例如ksh(1)。我的地下室里有一本关于Korn Shell的书,书中涵盖了ksh93。但是,ksh93和OpenBSD的pdksh之间有一些不同之处。因此,阅读手册页不仅给了我更准确的信息,而且也减少了阅读。

那么为什么不打印出手册页ksh(1)呢?我甚至可以使用PostScript很好地格式化:

但为什么要使用PostScript,而不是像其他任何人一样,在过去的25年里使用PDF呢?因为PostScript是最小的公分母,因此OpenBSD开箱即可支持PostScript。(如果想要更时髦的打印选择,可以去看看杯子,但我现在想让它保持简约。)。

通过阅读Absolute OpenBSD(2ndEdition)第16章中的lpdprinting Daemon一节(第306-307页),我了解了如何配置我的打印机。这就是我如何将配置应用到我的本地设置。

文件末尾必须有换行符。换行符使用反斜杠进行转义,最后一行除外。选项定义如下:

第一行为我的打印机定义了两个名称:lp,它应该始终在那里,以及brother,这是我对打印机的任意名称。

第二行(Sh)定义不应打印任何分页(汇总特殊页面上的最后一个打印作业)。

第三行(RM)指的是网络上的打印机。我的FritzBox总是给我的打印机提供相同的IP。也可以使用打印机的主机名。

第四行(SD)定义此打印机的假脱机程序目录。打印作业将写入该目录。

第五行(Lf)定义了错误消息的日志文件,希望您永远不需要检查。

接下来,需要创建假脱机程序目录。它必须归用户root和组守护进程所有。普通用户需要此目录的写入权限才能打印文档:

现在需要激活打印机守护进程LPD。要在系统启动时执行此操作,请将以下行添加到/etc/rc.conf/local:

现在,打印机已准备好接受作业。要打印之前生成的PostScript文件,只需对该文件运行lpr:

如果不需要预览,也可以将PostScript输出直接发送到打印机(毕竟是Unix):

在我的设置中,打印纯文本文件的行为很奇怪,但可能会将pr格式化程序与lpr一起使用,如下所示:

取而代之的是,我还将纯文本文件转换为PostScript,这在纸上看起来很不错。我使用enscript(1)完成此任务:

也可以使用GhostScript附带的pdf2ps(1)将PDF转换为PostScript,即ghostscript包:

不幸的是,这并不适用于所有PDF。但就目前而言,我有足够的手册页可读。顺便说一下,PostScript打印速度非常快。当我在LPR命令末尾按Return时,我几乎可以立即看到打印机上的状态LED开始闪烁。