虽然打印到纸上似乎永远都在“走渡渡鸟的路”,但在一张真正的纸上打印东西的需求却在我们最不期望(或最不想)看到它的时候出现。当然,在移动设备上遇到这种需求的人都不愿意站起来从传统计算机上打印相同的文档。任何经常在iPhone上使用AirPrint功能的人都可以证明,大多数消费级打印机对AirPrint的支持最多只能说是粗略的。在大多数情况下,打印机只需要进入长时间的睡眠状态,就不能再使用AirPrint,直到有人手动唤醒它。
利用Linux和树莓派实现AirPrint
几十年来,Unix(以及后来的Linux)提供了强大的打印机共享解决方案。CUPS是通用Unix打印系统(Common Unix Printing System)的缩写,是用于管理对需要在网络上与多个用户共享的打印机的访问的首选服务器工具。树莓派设备提供了一种低成本的硬件解决方案,无论是在购买成本还是运营成本方面,都允许用户利用Linux和CUPS通过网络共享一台打印机。
一个带有4GB内存的树莓派4运行Raspberry Pi OS版本11 (Bullseye)是本嵌入式编程教程的目的。默认的π使用用户帐号配置服务。用于演示的打印机是一台佳能MG 3222.树莓派设备必须与iOS设备连接到同一个局域网。这并不意味着它必须是无线连接的。理想情况下,树莓派应该有有线以太网连接到无线接入点或无线路由器所服务的同一网络。
树莓派操作系统,以前被称为Raspbian,通常包含CUPS守护进程,称为cupsd已安装并设置运行引导默认情况下。如果不是这种情况,可以使用恰当的包管理器和systemctl服务经理。如果cupsd没有配置为在引导时,必须手动开启,否则打印将无法工作。
如何配置CUPS
为了确保cupsd确实正在运行,使用命令:
(电子邮件保护):~ $ systemctl status cups
这将返回一个类似于下图的屏幕。根据系统设置,asudo可能需要加上前缀:
图1 -验证CUPS已安装并正在运行
默认情况下,π用户帐户应配置为lpadminLinux。这可以通过命令来验证:
(电子邮件保护):~ $ cat /etc/group | grep lpadmin .输出说明
图2 -确认pi用户是lpadmin组的成员
这表明π的成员lpadmin组。如果不是这样,或者是账户以外的π,则在继续之前需要进行组分配,否则将无法配置打印服务器。
如何安装foomatic-db软件包
的foomatic-dbLinux软件包显著增加了Linux能够支持的打印机列表,如果还没有出现,应该安装它:
(电子邮件保护):~ $ apt list -installed | grep foomatic-db . sh
如果没有返回结果,请使用包管理器安装它:
(电子邮件保护)~ $ sudo apt-get install foomatic-db
如何进入CUPS
CUPS是网络管理的,这意味着它可以通过打开树莓派的浏览器来访问https://localhost:631(将出现一个无效的证书警告,并可以取消)。应该出现以下屏幕:
图3 -通过“假”https的CUPS主页
重要提示:当cupsd默认情况下通常不配置为允许从本地主机外部访问web管理页面,因此不保证这一点。还应该验证该设备不能被外部浏览。
验证打印机配置
由于不是每台打印机都能很好地使用Linux,因此有必要确认打印机既连接到树莓派设备,又在树莓派操作系统中配置。幸运的是,CUPS可以很容易地做到这两点。请确保打印机已通过USB直接连接到树莓派设备。在CUPS主页中,单击“管理”选项卡和以下屏幕应该出现:
图4 - CUPS管理选项卡
点击“添加打印机”按钮。将出现一个关于凭据的提示。对于这个演示,使用用户标识而且密码的π将输入用户帐户。的成员lpadmin组将能够在此提示符下成功地进行身份验证。
重要提示:cupsd默认情况下两者都允许http而且https访问。这可以在配置文件中进行管理,但与此同时,请注意不要在http页面。如果要远程访问此页面,强烈建议使用正确的SSL证书.
重要提示:现代Linux安装永远不应该配置根密码或允许直接根登录,但如果树莓派设备以这种方式配置,在任何情况下都不应该在这里使用根密码。
图5 -身份验证页面-需要lpadmin组成员的凭据
成功登录后,将检测到任何支持的打印机。在本例中,所需的打印机是佳能MG3200系列,作为打印机是一个佳能MG3222打印机:
图6 -初始打印机选择
选择打印机并单击“继续”按钮。一个合适的描述而且的名字应该用于打印机,和“共享这台打印机”选中复选框:
图7 -打印机描述条目
完成此页后,单击“继续”按钮:
图8 -使用foam -db扩展了打印机模型选择
的添加foomatic-db包启用佳能MG3222被CUPS自动发现的打印机,并提供了相同的建议驱动程序。如果没有列出打印机的制造商和型号,则可能(尽管要困难得多)使用产后抑郁症(PostScript打印机定义)文件,如果可以为该打印机找到一个。
重要提示:虽然可以复制产后抑郁症文件,不能保证它将工作,因为设置可能硬编码在产后抑郁症用于其他系统的文件。
选择适当的打印机制造商和型号后,单击“添加打印机”按钮。下一个屏幕将允许设置打印机的默认选项:
图9 -打印机选项-更新所需值
注意,对于某些打印机,需要滚动页面以查看所有选项“设置默认选项”按钮。还要注意,在其他选项卡下可能还有其他选项,包括“横幅”而且“政策”选项卡。在继续之前,应该对这些进行核实。根据打印机的不同,可能不会出现所有的选项卡。
设置好所需的默认设置后,单击“设置默认选项”按钮。完成的设置屏幕(注意“不共享”位)应该出现在一个较短的确认屏幕自动刷新后:
图10 -打印机安装完成
在此屏幕上,单击“管理”标签在最上面的菜单栏。
图11 -启用共享
同时点击"共享连接到此系统的打印机"和“允许从互联网打印”选项。
重要提示:使用此设置,唯一阻止世界上任何地方的任何人打印到这台打印机的是一个正确配置的网络防火墙。
单击“更改设置”按钮。
图12 -服务器重启
重要提示:该页的刷新设置可能太快,无法等待cupsd服务器重新启动,此处可能会出现错误消息。如果出现这种情况,请等待几秒钟并刷新页面。
的政府页面现在将显示如上所示,共享设置勾选。
可选步骤:配置默认打印机
如果要从树莓派设备本身进行任何打印,那么应该将该打印机配置为该设备的默认值。这对于任何AirPrint或其他远程客户端都是不需要的。
使用CUPS安装iOS
本次演示使用了以下苹果设备:
- iPhone SE第二代,运行iOS 15.1
- iPad 6代,运行iOS 15.1
这两款设备都连接到WiFi网络,WiFi网络连接到树莓派设备所在的有线网络。所有设备都在同一TCP/IP网段。
在iOS中设置打印机最简单的方法是加载想要打印的内容,然后使用“打印”对话框。对于此演示,请考虑在“笔记”iPhone上的应用程序:
图13 -一个画得不好的“Hello World”图像,适合取景
每个应用程序都有自己的打印方式,但对于“Notes”应用程序,可以通过按“完成”按钮,完成绘图后,按...按钮替换它,并从屏幕底部向上滑动子菜单:
图14和15 -从“Notes”应用程序打印
虽然每个应用程序都有自己的打印方式,但任何给定应用程序的打印过程,一旦被访问,通常是相同的。在这个特定的iPhone上,没有配置现有的打印机,所以有“未选择打印机”开始:
图16 -未配置打印机的初始打印对话框
攻丝的“未选择打印机”按钮可以让iPhone查找所有可用的AirPrint打印机,果不其然,运行在树莓派设备上的AirPrint打印机将显示出来:
图17 -找到新的AirPrint打印机
轻敲“佳能MG3200系列”按钮将显示“打印”按钮,以及特定打印作业可能需要的任何一次性自定义:
图18 -实际的“Print”按钮
攻丝的“打印”按钮产生的成品:
图19 -打印输出
更进一步:CUPS上的其他设备
当然,这种设置并不局限于iOS设备。它可以与任何能够与CUPS通信的支持网络的设备一起工作。这些设备包括Windows电脑、Mac OSX电脑和Android设备。
覆盆子派和Cups Airprinting的结论
树莓派可以提供一个健壮的本地打印服务器,可以满足偶尔甚至经常打印用户的需求。它消除了低质量AirPrint实现的挫败感,甚至可以用不支持AirPrint的打印机创建AirPrint访问,前提是它们可以与CUPS一起工作。使用这种设备的另一个主要优势是,在连接到网络的情况下,让它全天候工作的成本可以忽略不计。