SDB:AirPrint via CUPS

跳转到:导航搜索
对于原生不支持 AirPrint 的打印机,可以使用 RPM 包“cups-airprint”来为来自 iOS 或 OS X 设备的的基本打印任务提供基本的 AirPrint 支持。

本文适用于 Linux 下 CUPS 版本高达 2.x,以及那里的传统过滤系统和后端。

如今的无驱动程序打印工作流程则大不相同。

简介

AirPrint 是 Apple 的一项技术,可帮助您从 iOS 或 OS X 设备创建高质量的打印输出,而无需下载或安装驱动程序。

有些打印机原生支持 AirPrint。对于 AirPrint 打印机,您不需要 CUPS AirPrint 支持。

对于任何其他打印机,如果可以通过 CUPS 进行打印,则可以使用 RPM 包“cups-airprint”来提供额外的工具和配置文件,以从 iOS 或 OS X 设备添加 CUPS AirPrint 支持,用于基本的打印任务。

有关限制,请参阅下面的“注意事项”部分。

CUPS AirPrint 支持通过结合三种开源技术来实现

  • mDNS/DNS-SD(又名 Bonjour 或 ZeroConf)用于打印机发现
  • CUPS 用于接收从 iOS 或 OS X 设备通过 IPP 协议发送的打印作业
  • cups-filters + Linux 打印机驱动程序用于将打印作业中的打印数据(PDF 或 URF)转换为特定打印机设备的本机数据格式,最终产生打印输出。

在 Linux 上,标准的 mDNS 实现称为 Avahi。

“cups-airprint”包主要涉及第一项

  • 通过 mDNS/DNS-SD 在 iOS 或 OS X 设备上发现 CUPS 打印机

“cups-airprint”包提供的 CUPS AirPrint 支持会生成并发布适当的 DNS-SD 记录,以便 iOS 和 OS X 设备可以使用它们。

先决条件

您想要添加 CUPS AirPrint 支持的所有打印机必须首先设置为通过 CUPS 接受打印作业。只有共享的 CUPS 打印机才会被提供用于 AirPrint 访问。

至少某些 iOS 应用程序在通过 AirPrint 打印时会发送 URF 格式,因此需要匹配的 urftopdf 过滤器(在 cups-filters >= 1.0.25 中提供)才能将 URF 转换为 PDF(PDF 是当前的标准打印数据格式,可以进一步转换为打印机的本机数据格式,参见 Concepts printing)。由于 cups-filters 不能很好地与传统的 CUPS <= 1.5.4 配合使用,因此实际上也需要现代的 CUPS >= 1.6,这意味着实际上 openSUSE 13.2、13.1、SUSE Linux Enterprise 11 以及更早版本没有 CUPS AirPrint 支持。现代 CUPS >= 1.6 加上 cups-filters 在 openSUSE Tumbleweed、openSUSE Leap 和 SUSE Linux Enterprise 12 上提供,这意味着 CUPS AirPrint 支持实际上仅适用于 openSUSE Tumbleweed、openSUSE Leap 和 SUSE Linux Enterprise 12。

假设(并建议)CUPS 和 Avahi 服务器在同一主机上运行,并且 Avahi 的默认配置被使用。还假设(Apple)客户端设备和 CUPS/Avahi 主机位于同一子网中。

“cups-airprint”包下载

截至撰写本文(2016 年 3 月),“cups-airprint”包可从 openSUSE build service 开发项目“Printing” 获取,适用于各种 openSUSE 和 SUSE Linux Enterprise 版本,并且也包含在 openSUSE Factory 中,从而使其在 openSUSE Tumbleweed 中可用。

要从 openSUSE build service 开发项目“Printing”直接下载 RPM 包,请访问 http://download.opensuse.org/repositories/Printing/ 并选择您精确匹配的 openSUSE 版本。

由于“cups-airprint”实际上仅在 openSUSE Tumbleweed、openSUSE Leap 和 SUSE Linux Enterprise 12 上有效,因此以下是“cups-airprint”包下载的 URL

除了 cups-filters >= 1.0.25 和 cups >= 1.6 之外,“cups-airprint”包还需要 python-cups。

有关如何设置 CUPS AirPrint 支持,请参阅“cups-airprint”包中的 /usr/share/doc/packages/cups-airprint/README.SUSE 文件或在 openSUSE build service 上在线查看:https://build.opensuse.org/package/view_file/Printing/cups-airprint/README.SUSE?expand=1

注意事项

通常:CUPS 加上 Linux 打印机驱动程序并不能提供与真正的 AirPrint 打印机相同的功能。

通过适当的 DNS-SD 记录共享 CUPS 打印机(即与 Linux 打印机驱动程序共享打印机),以便 iOS 和 OS X 设备可以使用它们,通常有效,但也可能以令人沮丧的方式失败,这就是为什么 CUPS 中没有原生 AirPrint 支持的原因。

通常,来自 iOS 或 OS X 设备的基本的打印任务应该可以正常工作,例如将电子邮件或网页打印到标准的 Letter 或 A4 介质。

但一旦超出基本的打印任务,事情可能会出错。以下是一些使用 CUPS 作为 AirPrint 服务器时可能无法正常工作的情况

  • 就绪介质(这是在 iOS 上选择介质尺寸的方式)
  • 正确的介质选择、缩放和旋转
  • 打印机状态(“缺纸”等)
  • 某些打印机的双面打印
  • 颜色/灰度模式
  • 复印件

这些缺陷中的一些需要对 CUPS 及其驱动程序架构进行重大更改才能修复,而另一些则需要驱动程序和(在某些情况下)打印机固件更新才能纠正。

如果您需要完整的 AirPrint 功能,则必须使用内置完整 AirPrint 功能的 AirPrint 打印机。有关 AirPrint 打印机型号的列表,请参阅 Apple 支持网站上的 关于 AirPrint 文章。

作为参考,请参阅 2015 年 10 月在“CUPS 用户讨论列表”<cups@cups.org>上关于“如何在 CUPS 中启用 AirPrint”的邮件主题,特别是请参阅

商标

AirPrint、Bonjour 和 OS X 是 Apple Inc. 的商标,在美国和其他国家/地区注册,请参阅 http://www.apple.com/legal/intellectual-property/trademark/appletmlist.html

更多信息