Swift中如何通过UIPrintInteractionController(AirPrint)实现双面打印
Swift中UIPrintInteractionController实现双面打印的解决方案
排查方向与修复步骤
- 确认打印机硬件支持:首先要确保目标AirPrint打印机本身具备双面打印能力,部分入门级打印机不支持该功能,代码设置会被直接忽略。
- 修正代码核心问题:你当前的代码存在两处关键问题:
- 打印结果的判断逻辑写反了,
if(error != nil)实际对应打印失败的场景,需要调整; - 缺失打印内容的绑定代码(
printingItem或printFormatter),这是导致双面设置不生效的核心原因之一。
- 打印结果的判断逻辑写反了,
修正后的完整代码示例
private var printController = UIPrintInteractionController.shared // 1. 准备要打印的内容(示例为本地PDF,根据你的实际场景替换) guard let targetDocumentURL = Bundle.main.url(forResource: "YourDocument", withExtension: "pdf") else { print("未找到目标打印文档") return } // 2. 配置打印基础信息 let printInfo = UIPrintInfo.printInfo() printInfo.jobName = "XXXPrint" printInfo.orientation = .portrait // 设置纵向文档的双面打印(长边翻转) printInfo.duplex = .longEdge // 若为横向文档,可使用短边翻转:printInfo.duplex = .shortEdge // 3. 绑定打印控制器的核心配置 printController.printInfo = printInfo printController.printingItem = targetDocumentURL // 必须绑定打印内容,否则设置不生效 // 4. 发起打印请求 printController.print(to: printer, completionHandler: { [weak self] controller, completed, error in guard let self = self else { return } if completed { print("打印成功") } else if let error = error { print("打印错误:\(error.localizedDescription)") } else { print("用户取消打印") } })
额外注意事项
- 用户操作优先级:如果用户在打印预览界面手动将双面打印改回单面,代码设置会被用户操作覆盖。若需限制,可通过
UIPrintInteractionControllerDelegate的相关方法处理,但通常不建议强制修改用户选择。 - 多设备测试:若某台打印机不生效,换一台明确支持双面打印的设备测试,排除硬件限制。
内容的提问来源于stack exchange,提问作者mMinuwan
相关产品推荐
相关产品推荐

