You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中如何通过UIPrintInteractionController(AirPrint)实现双面打印

Swift中UIPrintInteractionController实现双面打印的解决方案

排查方向与修复步骤

  • 确认打印机硬件支持:首先要确保目标AirPrint打印机本身具备双面打印能力,部分入门级打印机不支持该功能,代码设置会被直接忽略。
  • 修正代码核心问题:你当前的代码存在两处关键问题:
    1. 打印结果的判断逻辑写反了,if(error != nil)实际对应打印失败的场景,需要调整;
    2. 缺失打印内容的绑定代码(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 09:12:38