LPRng
来自 上游
- LPRng 软件是 Berkeley LPR 打印后台处理程序功能的增强、扩展和可移植实现。在提供相同接口并满足 RFC1179 要求的同时,该实现是全新的,并为以下功能提供支持
- 完整的(无需数据库)lpr、lpc 和 lprm 程序
- 打印队列的动态重定向;自动作业保持
- 高度详细的诊断信息
- 服务于单个队列的多个打印机
- 客户端程序不需要以 SUID root 身份运行
- 大大增强的安全检查
- 大大改进的权限和授权机制
LPRng 成熟且稳定,并结合了灵活的打印过滤机制。它作为打印服务器表现出色,但也可以用作打印客户端。它还可以从其他机器上安装了 CUPS 客户端的 CUPS 客户端进行打印,只需在 CUPS 端进行少量手动配置。
安装
安装可选的过滤器软件包
- poppler
- 以下任选其一:a2ps、enscript、mpageAUR
- ghostscript
- hplip
- foomatic-filters-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.sample
和 lpd.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_server
和 printcap_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 文件进行任何过滤。