【问题标题】:Cancel or Flush AirPrint Jobs from iOS App从 iOS 应用程序取消或刷新 AirPrint 作业
【发布时间】:2020-01-09 01:23:16
【问题描述】:

iOS 有一个称为 AirPrint 的打印功能,它不需要安装特定的设备驱动程序。我的 iOS 应用程序通过 AirPrint 打印图像数据,但有时 AirPrint 的打印队列卡住了。 AirPrint 的打印队列是先进先出的,如果第一个作业由于临时网络故障等原因留下,下一个作业将不会发送到打印机。

因此,我希望刷新打印队列,或取消死作业以防卡在打印队列中。我知道我们可以在 Print Center(iOS 打印系统的后台应用程序)中取消打印作业,但我希望在我自己的 iOS 应用程序中执行此操作。

问题:

(1) 我们可以从 iOS 应用程序中取消或清除 AirPrint 的打印队列中的打印作业吗? (如果你有 Swift 的示例代码来做这样的事情,我真的很感激!)

(2) 有谁知道打印作业超时需要多长时间?

欢迎提出任何建议。

AirPrint 参考: https://developer.apple.com/library/archive/documentation/2DDrawing/Conceptual/DrawingPrintingiOS/Printing/Printing.html#//apple_ref/doc/uid/TP40010156-CH12-SW2

【问题讨论】:

    标签: ios objective-c swift airprint


    【解决方案1】:

    iOS 中有一个 UI 可用于 PrintJob 管理。所以可能有可用的 API。

    如果 iOS-PrintJob 返回 ipp job-uri,您可以在应用中实现打印作业管理。您必须实现 ipp 协议并支持 Cancel-Job 操作。

    iOS 使用 CUPS 作为 ipp 客户端。我通过针对我自己的 AirPrint 实现运行测试来分析 iOS 的行为。使用的 http User-Agent 是“CUPS/2.3.4 (iOS 14.4.2; iPad8,3) IPP/2.0”

    iOS 只关心成功的打印作业提交。 它确实通过 Get-Job-Attributes 操作查询作业状态。 iOS 提供一个允许用户监视(和控制)打印作业的 UI 是有道理的。我们应该为 iOS @Apple 提交错误或功能请求。

    iOS 还会查询打印机状态。在我的测试中,当我停止我的 AirPrint 服务器时,我会收到打印机离线的通知,并且我可以选择取消或重试。

    当打印机状态为“停止”且原因为“暂停”时,打印中心可用!

    总结: 作业监视和控制可通过打印中心进行。 打印中心是否显示取决于 AirPrint 实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多