此存储库包含一个打印机应用程序,用于在 HP HPLIP 驱动程序套件支持的 HP 和 Apollo 打印机上进行打印。
它使用 PAPPL 支持来自多个操作系统的 IPP 打印。此外,它还使用cups-filters 2.x(libcupsfilters、libppd中的过滤器函数)和pappl-retrofit(在打印机应用程序中封装经典CUPS驱动程序)的资源。这项工作(或者现在的 pappl-retrofit 的代码)源自 hp-printer-app。
打印机驱动程序本身以及与打印机硬件通信的软件取自 HPLIP(HP Linux 成像和打印)驱动程序套件,以及有关支持的打印机型号及其功能的信息。
欢迎您的贡献。请发布问题并拉取请求。
注意:HPLIP 由 HP 积极维护,他们不断添加最新的打印机型号并使软件适应新的环境/Linux 发行版。因此,如果 HP 将 HPLIP 转变为打印机应用程序或至少提供它作为经典 CUPS/SANE 驱动程序的替代方案,这也是正确的方法。特别是,他们应该创建一个本机打印机应用程序,这意味着它在内部不使用 PPD、CUPS 过滤器和 CUPS 后端。此外,它们的实用程序需要独立于 CUPS。
对于 PostScript 打印机,您还可以使用 PostScript 打印机应用程序,特别是如果您已经为某些非 HP PostScript 打印机安装了该应用程序。
另请检查您的打印机是否是无驱动程序 IPP 打印机(AirPrint、Mopria、IPP Everywhere、Wi-Fi Direct Print、从手机打印),因为在这种情况下,您根本不需要任何打印机应用程序。大多数现代 HP 打印机,即使是最便宜的型号,都是无人驾驶 IPP 打印机。即使仅 USB 打印机也可以是无驱动 IPP,并且您通常可以通过 USB 使用无驱动 IPP,在这些情况下首先尝试 ipp-usb。
打印机应用程序,提供hpcups
打印机驱动程序和 HPLIP 的所有打印机 PPD,支持在 HP 和 Apollo 的大多数打印机上进行打印。这样可以轻松进行高质量打印,包括在相纸上打印照片。还包括用于在 PostScript 打印机上进行 PIN 保护打印的hpps
CUPS 过滤器。
打印机也可通过 HPLIP 发现。对于 USB 打印机,使用hp
CUPS 后端;对于网络打印机,使用hp-probe
实用程序(封装在脚本中以充当 CUPS 后端)。
与打印机的通信是由hp
CUPS 后端完成的,因此(至少在 USB 的情况下)使用 IEEE-1284.4 数据包协议(USB 上的协议 7/1/3),而不是简单的流协议(如标准CUPS 和 PAPPL 后端使用)。这样,人们应该能够同时打印和扫描,或者至少在打印时检查打印机状态。并非所有打印机都支持此协议,如果不支持,则使用标准流协议。还支持需要hp
后端的任何其他特殊功能。在“添加打印机”Web 界面页面的“设备”下,选择“HPLIP (HP)”条目。
请注意, hp
后端不允许双向访问打印机。如果您拥有 PostScript 打印机并且更喜欢支持远程查询打印机附件配置而不是同时打印和扫描,则还可以使用 CUPS 的 USB 和网络打印机标准后端。
如果您有不寻常的系统配置或个人防火墙,HP 后端可能无法发现您的打印机。同样在这种情况下,标准后端(包括与主机名/IP 字段相结合的完全手动“网络打印机”条目)可能会有所帮助。
使用 CUPS 代替 PAPPL 的标准后端为 USB 打印机提供了奇怪的解决方法,这些打印机具有正在使用的兼容性问题(并且是可编辑的),并且除了套接字之外,输出还可以通过 IPP、IPPS(加密!)和 LPD 发送到打印机(通常端口 9100)。可以配置 SNMP 后端(社区、地址范围)。
要在非 PostScript 打印机上打印的 PWG Raster、Apple Raster 或图像输入数据不会转换为 PostScript 或 PDF,它只会转换/缩放到所需的色彩空间和分辨率,然后送入hpcups
驱动程序。
对于在非 PostScript 打印机上打印,PDF 和 PostScript 输入数据将使用 Ghostscript 渲染为光栅数据。 Ghostscript 还用于将 PDF 转换为 PostScript 打印机的 PostScript。
有关受支持的打印机型号及其功能的信息基于 HPLIP 中包含的 PPD 文件。它们作为压缩存档打包在 Snap 中。
标准作业 IPP 属性映射到最适合它们的驱动程序选项设置,以便用户可以从仅支持标准 IPP 属性且无法检索 PPD 选项的任何类型的客户端(例如电话或 IoT 设备)进行打印。纸盒、介质尺寸、介质类型和双面打印可以轻松映射,但当涉及到颜色和质量时,它会变得更加复杂,因为 PPD 文件中的相关选项差异很大。在这里,我们使用一种算法,可以自动(想要手动编辑约 3000 个 PPD 文件来完成作业)为print-color-mode
( color
/ monochrome
)、 print-quality
( draft
/ normal
的每种组合找到正确的选项设置集/ high
),以及当前打印机 PPD 中的print-content-optimize
( auto
/ photo
/ graphics
/ text
/ text-and-graphics
)。因此,您可以轻松获得打印机的全部质量或速度,而无需处理特定于打印机的选项设置(仍可通过 Web 管理界面访问原始选项)。
HPLIP 打印机应用程序的 Snap 从 Debian 的打包存储库而不是直接从 HP 获取 HPLIP 的源代码,因为 Debian 的软件包有约 80 个修复 bug 的补丁,这些 bug 已报告给 HP,但上游未采用该补丁。因此,使用 Snap 用户应该获得与使用 Debian 软件包相同的可靠性和质量体验。
支持通过 Web 界面中的附加页面下载 HPLIP 的专有插件。这增加了对某些激光打印机的支持,这些打印机每次打开时都需要加载固件或使用某些专有的打印数据格式。这在 Snap 和打印机应用程序的经典安装中都有效(必须以 root 身份运行,否则只能检查插件的状态)。
支持在 HP 多功能打印机上进行扫描。这需要 PAPPL 中的扫描支持(在 GSoC 2021 中取得了良好进展)。
PDF 测试页,例如使用bannertopdf 过滤器生成的。
供应商选项的人类可读字符串(需要 PAPPL 的支持:问题 #58:本地化支持)
国际化/本地化(需要 PAPPL 的支持:问题 #58:本地化支持)
通过 ps_status() 函数检查 SNMP 墨水量(需要 PAPPL 的支持:问题 #83:CUPS 通过后端进行 IPP 和 SNMP 墨水量轮询,PAPPL 应该具有这方面的功能)
cups-filters 的构建选项,无需 libqpdf 和/或 libppd 即可构建,前者将允许创建此打印机应用程序的快照,而无需下载和构建 QPDF
要运行并使用此打印机应用程序,只需从 Snap Store 安装它即可:
sudo snap install --edge hplip-printer-app
然后按照以下说明进行设置。
要自己构建 Snap,请在此存储库的主目录中运行
snapcraft snap
这将下载所有需要的包并构建 HPLIP 打印机应用程序。请注意,PAPPL(即将推出的 1.0)和 cups-filters(即将推出的 2.0)是直接从其 GIT 存储库中提取的,因为还没有合适的版本。这也可能导致该打印机应用程序突然不再构建。
安装生成的 Snap 运行
sudo snap install --dangerous hplip-printer-app_1.0_amd64.snap
打印机应用程序将作为服务器守护程序自动启动。
进入网页界面
http://localhost:8000/
使用 Web 界面添加打印机。提供名称,选择发现的打印机,然后选择品牌和型号。还可以设置已安装的附件、加载的媒体和选项默认值。如果打印机是 PostScript 打印机,则附件配置和选项默认值也经常会从打印机轮询。
如果您的打印机在Web界面中的条目有“需要专有插件”的备注,则您需要安装HP的插件。为此,请单击此打印机条目中的“插件”按钮或 Web 界面首页“其他设置”下的“安装专有插件”按钮,然后按照屏幕上的说明进行操作。
然后使用以下命令打印 PDF、PostScript、JPEG、Apple Raster 或 PWG Raster 文件
hplip-printer-app FILE
或使用 CUPS 进行打印,CUPS(以及 cups-browsed)发现使用此打印机应用程序设置的打印机并将其视为无驱动 IPP 打印机(IPP Everywhere 和 AirPrint)。
看
hplip-printer-app --help
以获得更多选择。
使用“-o log-level=debug”参数在终端窗口中进行详细日志记录。
您可以将文件添加到/var/snap/hplip-printer-app/common/usb/
以获取其他 USB 怪异规则。编辑现有文件仅用于快速测试,因为它们会在 Snap 的每次更新时被替换(以引入新规则)。
您可以编辑/var/snap/hplip-printer-app/common/cups/snmp.conf
文件来配置 SNMP 网络打印机发现。
您还可以进行“快速而肮脏”的构建,无需捕捉,也无需在系统中安装 PAPPL、cups-filters 2.x 和 pappl-retrofit。您需要一个包含 PAPPL 最新 GIT 快照、cups-filters 最新 GIT 快照和 pappl-retrofit 最新 GIT 快照(每个分支的主分支)的目录。它们都需要编译( ./autogen.sh; ./configure; make
),不需要安装。还要安装所有需要的库的头文件(安装“libcups2-dev”就可以了)。
在hplip-printer-app.c目录下运行命令行
gcc -o hplip-printer-app hplip-printer-app.c $PAPPL_SRC/pappl/libpappl.a $CUPS_FILTERS_SRC/.libs/libppd.a $CUPS_FILTERS_SRC/.libs/libcupsfilters.a $PAPPL_RETROFIT_SRC/.libs/libpappl-retrofit.a -ldl -lpthread -lppd -lcups -lavahi-common -lavahi-client -lgnutls -ljpeg -lpng16 -ltiff -lz -lm -lusb-1.0 -lpam -lqpdf -lstdc++ -I. -I$PAPPL_SRC/pappl -I$CUPS_FILTERS_SRC/ppd -I$CUPS_FILTERS_SRC/cupsfilters -I$PAPPL_RETROFIT_SRC/pappl/retrofit -L$CUPS_FILTERS_SRC/.libs/ -L$PAPPL_RETROFIT_SRC/.libs/
还有一个 Makefile,但这需要将 PAPPL、cups-filters 2.x 和 pappl-retrofit 安装到您的系统中。
跑步
./hplip-printer-app --help
运行非快照版本时,默认情况下会在以下位置搜索 PPD 文件:
/usr/share/ppd/
/usr/lib/cups/driver/
/var/lib/hplip-printer-app/ppd/
您可以设置PPD_PATHS
环境变量来搜索其他位置:
PPD_PATHS=/path/to/my/ppds:/my/second/place ./hplip-printer-app server
只需将任意数量的路径的冒号分隔列表放入变量中即可。建议创建包装脚本。
请注意,仅考虑 HPLIP 的hpcups
驱动程序的 PPD 文件,其他 PPD 文件将被忽略。
只能通过 HPLIP (USB) 的hp
后端或 HPLIP(网络)的hp-probe
实用程序发现打印机。对于后者,包含一个名为HP
包装器脚本,该脚本使该实用程序可以像 CUPS 后端一样使用(仅限发现模式)。这尤其使得只有 HP 和 Apollo 打印机被发现。不支持其他制造商的打印机。
作业通过hpcups
进行过滤,并通过hp
后端(USB 和网络)发送到打印机。
此打印机应用程序中作为替代方案提供的标准(不是 HPLIP)后端是 CUPS 后端,而不是 PAPPL,这意味着对于 USB 打印机,使用 CUPS 的 USB 怪异解决方法来解决兼容性问题,网络打印机也可以与 IPP、IPPS 和LPD 协议和 SNMP 打印机发现是可配置的。
如果需要,可以编辑/usr/share/cups/usb
中的 USB Quirk 规则和/etc/cups/snmp.conf
文件。
确保您已安装 HPLIP,如果您想使用标准后端,请确保 CUPS(至少其后端)。
您还需要 Ghostscript 来打印 PDF 或 PostScript 作业。
要访问测试页testpage.ps
请使用 TESTPAGE_DIR 环境变量:
TESTPAGE_DIR=`pwd` PPD_PATHS=/path/to/my/ppds:/my/second/place ./hplip-printer-app server
或者您自己创建测试页(PostScript、PDF、PNG、JPEG、Apple Raster、PWG Raster):
TESTPAGE=/path/to/my/testpage/my_testpage.ps PPD_PATHS=/path/to/my/ppds:/my/second/place ./hplip-printer-app server
HPLIP 打印机应用程序版权所有 © 2020,归 Till Kamppeter 所有。
它源自 HP PCL 打印机应用程序,这是使用 PAPPL 的光栅打印机应用程序的第一个工作模型。它可以在这里找到:
https://github.com/michaelrsweet/hp-printer-app
HP PCL 打印机应用程序版权所有 © 2019-2020,作者:Michael R Sweet。
该软件根据 Apache 许可证版本 2.0 获得许可,但允许链接到 GPL2/LGPL2 软件(如旧版本的 CUPS)。有关详细信息,请参阅文件“许可证”和“通知”。