LPRng

来自 ArchWiki

来自 上游

LPRng 软件是 Berkeley LPR 打印后台处理程序功能的增强、扩展和可移植实现。在提供相同接口并满足 RFC1179 要求的同时,该实现是全新的,并为以下功能提供支持
  • 完整的(无需数据库)lpr、lpc 和 lprm 程序
  • 打印队列的动态重定向;自动作业保持
  • 高度详细的诊断信息
  • 服务于单个队列的多个打印机
  • 客户端程序不需要以 SUID root 身份运行
  • 大大增强的安全检查
  • 大大改进的权限和授权机制

LPRng 成熟且稳定,并结合了灵活的打印过滤机制。它作为打印服务器表现出色,但也可以用作打印客户端。它还可以从其他机器上安装了 CUPS 客户端的 CUPS 客户端进行打印,只需在 CUPS 端进行少量手动配置。

注意: LPRng 的一个缺点是 Gnome3/GTK3(包括 chrome 和 chromium)和 KDE 不支持从其 GUI 进行 lpr 打印。但是,打印到文件然后使用 lpr 是可行的,尽管这很不方便。

安装

安装 lprngAUR 软件包。

安装可选的过滤器软件包

配置

配置包括以下步骤

  • 设置控制文件
  • 配置过滤器
  • 创建 printcap 文件和后台处理目录
  • 启用并启动 lpd 守护进程

控制文件

本地配置

必须配置两个控制文件

  • /etc/lprng/lpd/lpd.conf
  • /etc/lprng/lpd/lpd.perms

远程配置

/usr/share/doc/lprng 中的默认配置对于客户端计算机打印到远程打印机来说是足够的。将它们复制到 /etc/lprng/lpd/

# cp /usr/share/doc/lprng /etc/lprng/lpd

并进行编辑。

服务器配置

对于通过 Internet 接收请求的服务器,请取消注释 /etc/lprng/lpd/lpd.conf 中的最后一行,并按照 /etc/lprng/lpd/lpd.perms 注释中的文档配置权限。

注意: 位于 /usr/share/doc/lprng 中的文件 lpd.conf.samplelpd.perms.sample 记录了更复杂的情况。

配置打印机设置(过滤器)

如果您只选择以下过滤器(设置)说明之一,那就可以了。只需决定您想走哪条路。

Postscript 打印机

如果您有网络 Postscript 打印机,那么您很幸运。示例 postscript 过滤器 /usr/share/doc/lprng/psfilter 将 PDF 和文本文件转换为 Postscript。其他文件类型将被拒绝。

将此文件复制到 /usr/lib/lprng/lpd 并根据需要重命名。然后编辑它以设置您的纸张类型和您选择的单面/双面打印。

如果您希望有单独的单面和双面打印队列,请制作两个具有不同名称的副本并进行适当的编辑。

Foomatic 系统

另一种打印过滤机制是通过 Foomatic 系统。此系统由 CUPS 使用。安装 foomatic-filters-lprngAUR(因为 CUPS 安装中的 foomatic-rip 程序已被修改为删除 LPRng 支持)。

使用上面描述的 foofilter,并针对您所需的 .ppd 文件进行编辑。按照 foofilter 中指定的路径安装 .ppd 文件。(/etc/lprng/lpd 是一个很好的位置。)

要使用惠普打印机,请从主发行版安装 hplip。此软件包包含几乎所有惠普打印机的 .ppd 文件。

Ghostscript 驱动

如果您有具有 Ghostscript 驱动程序的打印机,请如上所述复制并编辑 gsfilter 以设置适当的驱动程序和纸张类型。您可以通过键入以下命令来发现您的 Ghostscript 版本中可用的驱动程序

$ gs -h

请注意,此选项对各种打印机功能的支持通常是有限且过时的。

Printcap 文件

/etc/lprng/printcap 文件告诉 LPRng 您拥有的打印机以及需要使用的打印过滤器。

示例

printcap.sample 文件(在 /usr/share/doc/lprng 中)提供了关于如何设置 printcap 文件的简短教程。此目录中的 printcap 片段 printcap_serverprintcap_client 提供了更多信息。

对于两台本地打印机,示例文件可能如下所示

DCPJ4120DW:\
     :mx=0:\
     :sd=/var/spool/lpd/DCPJ4120DW:\
     :sh:\
     :lp=/dev/usb/lp1:\
     :if=/opt/brother/Printers/dcpj4120dw/lpd/filterdcpj4120dw:
HL2035:\
     :mx=0:\
     :sd=/var/spool/lpd/HL2035:\
     :sh:\
     :lp=/dev/usb/lp0:\
     :if=/opt/brother/Printers/brhl2035/lpd/filterHL2030:

网络打印建议

通常,应将一台计算机指定为一台或多台打印机的服务器。其他客户端计算机应将其打印作业发送到服务器,而不是直接发送到打印机。

printcap_server 中相当不明显的服务器设置是使打印过滤在网络打印机上工作所必需的,而不是通过 USB 端口直接连接到服务器计算机的打印机。(请参阅参考手册。)

创建 printcap 文件后,以 root 身份运行命令

$ /usr/bin/checkpc -f

这将检查您的配置并在 /var/spool/lpd 中创建后台处理目录。如果 checkpc 抱怨某些内容,请解决该问题并重新运行。

启动 lpd 守护进程

LPRng 在后台运行一个名为 lpd 的守护进程来管理打印请求。启动/启用 lpd.service

如果任何配置文件被更改,则必须重启 lpd

用法

lpr 命令是 LPRng 中的打印工具。一般使用形式为

$ lpr [options] file_to_be_printed

如果未指定文件,则从标准输入接受输入。最有用的选项是 -P printer-K number_of_copies。在没有打印机选项的情况下,将环境变量 PRINTER 设置为打印机的名称将告诉 LPRng 使用哪个打印机。

其他有用的命令是 lpq(检查打印队列)和 lprm(从队列中删除打印作业)。请参阅 lpr(1)lpq(1)lprm(1)

CUPS 和 LPRng

CUPS 可用于从未安装 LPRng 的客户端计算机访问服务器上的打印机。诀窍是将 CUPS 配置为通过 lpd 协议访问打印机。使用 CUPS 的 Web 界面可以轻松完成此操作。此外,由于此处设置的服务器执行所有必要的打印过滤,请告知 CUPS 使用 raw 过滤器。可以根据您的需求设计过滤职责的替代划分。

故障排除

打印机特定说明

尽管标题如此,但 CUPS/打印机特定问题 中的某些信息并非 Cups 特有。

GTK2

GTK2 应用程序仍然支持 lpr 打印。为了使其工作,请在您的主目录中创建文件 ~/.gtkrc-2.0,其中包含单行

gtk-print-backends = "file,lpr"

LXDE

如果桌面的外观和感觉发生改变,LXDE 可能会创建自己的 ~/.gtkrc-2.0 文件 — 在此文件中查找有关如何继续操作的说明。

Postscript 打印

来自 poppler 软件包的过滤器 pdftops 用于从打印过滤器中的 PDF 文件创建 Postscript。

有时,pdftops 会产生错误或无输出。来自 ghostscript 软件包的替代过滤器 pdf2ps 可以替代,但此过滤器有其自身的问题。

对于一次性情况,只需使用 pdf2ps 或其他转换器生成 Postscript 并将其发送到打印机即可。

双面 PS

在示例过滤器中,通过在第一行之后插入一行 Postscript 代码来实现 Postscript 文件的双面打印。对于某些 Postscript 文件,这不起作用。

在这种情况下,将 Postscript 文件发送到单面打印队列。为单面打印设置的打印过滤器 psfilter 不会对 Postscript 文件进行任何过滤。