PPR: PostScript 打印机假脱机
PPR 是一个 PostScript 打印机假脱机程序。它允许用户将作业排队,以便在不同的 PostScript 打印机上打印。一台主机可以作为一个部门甚至整个校园的打印假脱机程序。它非常适合管理大量打印机。
与传统的打印服务器(如 System V LP 或 Berkeley LPD)相比,PPR 的主要优势在于它能够使用 PostScript 标准或 Adobe 文档结构约定 (DSC) 的所有功能。
虽然许多 Linux 用户对 lpd 打印守护程序感到满意,但我发现当需要支持局域网(本地局域网)上超过 160 台 Linux、Macintosh 和 Windows 计算机的四台 TCP/IP HP 5M PostScript 打印机时,它不太容易使用。
PPR 专门为操作 PostScript 打印机而设计,接受来自不同系统的作业,例如 UNIX(远程或本地)、使用 Samba 的 Windows 或使用 AppleTalk 的 Macintosh。PPR 可以与通过并行端口、串行端口、AppleTalk 或 TCP/IP 连接的任何 PostScript 打印机通信。它甚至可以与远程 lpd 服务器通信。从版本 1.00(第一个公开发行版)开始,PPR 包含一个 GhostScript 接口,使其能够在 GhostScript 支持的每台非 PostScript 打印机上打印。因此,PPR 非常适合异构环境。
PPR 的设计考虑了优化 PostScript 和 Adobe DSC 的使用。因此,如果打印机指示作业包含 PostScript 错误,PPR 能够停止作业(队列列表将显示该作业为“已停止”)。许多 PostScript 解释器对 PostScript 文件中可能出现的错误“很宽容”,但生成 PostScript 的程序应该很严格。请记住,PostScript 是一种编程语言。如果 gcc 允许您忘记分号或未声明的变量会怎样?
此外,对于支持此功能的打印机,PPR 能够捕获打印机发送的错误消息并处理它们,如果出现问题,则向用户或管理员发送通知。作业完成后,可以通过各种方式通知用户:如果他是 UNIX 用户,则可以发送邮件消息;如果他使用 Samba,则可以发送 WinPopup,等等,以便批处理和队列打印在这里具有真正的意义。
如果用户向 PPR 提交非 PostScript 文件,它会使用安装时确定的一组工具将文件转换为 PostScript。例如,如果系统上安装了 LaTeX 和 dvips 程序,则 .tex 文件将通过 LaTeX 和 dvips 处理;.gif 文件可以通过 netpbm 实用程序处理,等等。然后,PPR 将转换后的文件交给打印机。
队列处理也做得很好。任何用户都可以在提交作业后保留或取消其作业;任何管理员(属于特定访问列表的任何受信任用户)都可以保留、释放或取消作业。最后,如果需要,可以将作业从一台打印机移动到另一台打印机。
PPR 还支持 PPD 文件(PostScript 打印机描述文件),这是一种方便的方式,只需一个文件即可描述打印机的功能。PPR 读取 PPD 文件并自动确定打印机可以处理的纸张类型、它可以使用的纸盒类型等等。PPD 文件可以从 Adobe 的 FTP 站点下载,或者您通常可以在打印机随附的驱动程序磁盘上找到它们。
截至 1999 年 1 月,PPR 的最新版本是 1.40a4,Linux 是主要的开发系统。1.31 及更高版本足够稳定,可以在生产系统中使用。PPR 使用的资源很少,除了假脱机区域,其大小取决于站点上有多少用户打印。我们过去常在 Pentium 66 Linux 机器上运行 PPR,该机器也用于服务电子邮件和 Web。我们迁移到更强大的机器只是因为我们认为最好将打印假脱机与邮件假脱机分开。
您可以在 http:tarzan.trincoll.edu/printing/pprfaq.html 找到 PPR 常见问题解答,并在 http:mouse.trincoll.edu/ppr/docs/index.html 找到所有文档。它们以易于理解的风格编写。
按照“安装和使用 PPR”中描述的步骤可以轻松完成 PPR 的安装,这是一本运行 PPR 的初学者指南。编译和就地安装程序并不困难。如果您计划将 AppleTalk 与 PPR 一起使用,您将需要 AppleTalk 支持(来自 NetaTalk 或 CAP,具体取决于平台)以及一个名为 NATALI 的单独库(如果您使用 Netatalk),该库随 PPR 一起提供。
接下来是配置过程。您可能需要在系统文件中添加用户和组,以便 PPR 正常工作。访问列表系统允许管理员委派一些权限;因此,他可以委派一些受信任的用户不时清理打印机队列的任务,而无需不断地请求管理员的帮助。过去曾经有一些 UNIX 组,人们必须属于这些组才能拥有 PPR 权限,但这已逐步淘汰,取而代之的是访问列表系统。
您的网络上的每台打印机都必须定义,以及要使用的接口:TCP/IP 使用 tcpip,AppleTalk 使用 atalk。然后设置一些配置变量,例如选择适合打印机的 PPD 文件,甚至为当前打印机添加注释。
您甚至可以对打印机进行分组并定义组。提交到组的作业将转到组中第一个非空闲打印机。打印机甚至可以轮换:作业将以循环方式提交到组中的每台打印机。
接下来,您可以为不同的 PPR 访问方法配置系统。例如,对于 Samba,包含程序 ppr2samba,它生成一个描述所有 PPR 定义的打印机的简单文件;将此文件包含在您的 smb.conf 文件中。
要添加对 AppleTalk 用户的支持,您将必须启动 papsrv 守护程序,该守护程序列出 AppleTalk 网络上的打印机并处理发送到 PPR 的作业。您甚至可以丢弃 lpd 服务器并使用 lprsrv 来像 papsrv 为 AppleTalk 执行操作一样为 lpd 作业提供服务。
如果您关心谁在做什么,或者您只是想为昂贵打印机打印的每张纸收费,PPR 还允许按用户收费配额。
PPR 被证明在各种配置中都很有用,并且应该不难适应您的需求。我们每天都在这里使用它,几乎不需要维护:主要的打印问题来自打印机本身。
非常感谢 PPR 的作者 David Chappell 先生,他慷慨地审阅了本文。
