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

Swift代码如何实现强制打印机按指定比例打印的功能?

Swift强制按指定比例打印图片实现方案

因为UIPrintInfo与UIPrintInteractionController未提供直接的缩放控制接口,我们可以通过预先重绘图片为目标比例尺寸的方式实现需求,重绘后的图片传入打印控制器即可强制按指定比例输出。

完整实现代码

/// 按指定缩放比例打印图片
/// - Parameters:
///   - image: 原始待打印图片
///   - scale: 缩放比例,1.0为原图尺寸打印,小于1为缩小,大于1为放大
static func printImage(image: UIImage, scale: CGFloat = 1.0) {
    // 计算缩放后的目标尺寸
    let targetSize = CGSize(
        width: image.size.width * scale,
        height: image.size.height * scale
    )
    
    // 重绘生成指定尺寸的新图片
    let scaledImage = UIGraphicsImageRenderer(size: targetSize).image { _ in
        image.draw(in: CGRect(origin: .zero, size: targetSize))
    }
    
    // 原有打印逻辑
    let printInfo = UIPrintInfo(dictionary: nil)
    printInfo.outputType = .general
    printInfo.jobName = "Printing"
    
    let printController = UIPrintInteractionController.shared
    printController.printInfo = printInfo
    printController.printingItem = scaledImage
    
    let containerView = UIImageView(frame: CGRect(origin: .zero, size: targetSize))
    printController.present(from: containerView.bounds, in: containerView, animated: true)
}

固定宽高比适配逻辑

如果需要强制固定宽高比(比如3:2、4:3)而非全局缩放,替换尺寸计算和重绘逻辑即可:

// 示例:强制按4:3比例打印,图片居中留白不拉伸
let targetAspect: CGFloat = 4.0 / 3.0
let originalAspect = image.size.width / image.size.height
let fitScale = min(targetSize.width / image.size.width, targetSize.height / image.size.height)

let drawRect = CGRect(
    x: (targetSize.width - image.size.width * fitScale) / 2,
    y: (targetSize.height - image.size.height * fitScale) / 2,
    width: image.size.width * fitScale,
    height: image.size.height * fitScale
)

// 重绘时使用drawRect替代原先的zero origin rect
let scaledImage = UIGraphicsImageRenderer(size: targetSize).image { _ in
    image.draw(in: drawRect)
}

注意事项

  • 重绘操作默认保留原图分辨率,不会造成画质损失
  • 如果需要适配打印纸张尺寸,可通过UIPrintInteractionController.printPaper属性获取纸张尺寸后再动态计算目标比例
  • 复杂打印布局场景可替换为UIPrintPageRenderer自定义页面边距、多页内容等配置

内容的提问来源于stack exchange,提问作者Dan Selig

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:18:03