iOS有一个称为AirPrint的打印功能,它不需要安装特定的设备驱动程序。我的iOS应用通过AirPrint打印图片数据,但有时AirPrint的打印队列卡住了。AirPrint的打印队列是先进先出的,如果第一个作业由于某些原因(如临时网络故障)而仍然存在,则下一个作业将不会发送到打印机。
因此,我希望刷新打印队列,或者在打印队列卡住的情况下取消死作业。我知道我们可以在打印中心( iOS打印系统的后台应用程序)中取消打印作业,但我希望在我自己的iOS应用程序中这样做。
问题:
(1)是否可以从iOS app取消或清除AirPrint打印队列中的打印作业?(如果您有Swift的示例代码来做这样的事情,我将非常感谢!)
(2)有人知道打印作业超时需要多长时间吗?
任何建议都将受到欢迎。
发布于 2021-03-31 15:45:07
iOS中提供了一个用于PrintJob管理的UI。因此可能有可用的API。
如果iOS-PrintJob返回ipp job-uri,则可以在应用程序中实现打印作业管理。您必须实现ipp协议并支持Cancel-Job操作。
iOS使用CUPS作为ipp客户端。我已经通过对我自己的AirPrint实现运行测试来分析iOS的行为。使用的http用户代理是"CUPS/2.3.4 (iOS 14.4.2;iPad8,3) IPP/2.0“
iOS只关心成功的打印作业提交。它通过Get- job -Attributes操作查询作业状态。如果iOS提供一个允许用户监视(和控制)打印作业的UI,这将是有意义的。我们应该向iOS @Apple提交一个bug或功能请求。
iOS还会查询打印机状态。在我的测试中,当我停止AirPrint服务器时,我得到的通知是打印机已离线,并且出现了取消或重试的选项。
当打印机状态为“已停止”且原因为“已暂停”时,打印中心可用!
摘要:可通过打印中心进行作业监视和控制。打印中心是否出现取决于AirPrint实现。
https://stackoverflow.com/questions/59655984
复制相似问题