一个 Swift 库,用于打印到廉价的“Cat”热敏打印机,这些打印机可以在速卖通等网站上找到。 我已经使用 MX10 进行了测试,但我相信这些型号都可以使用这个库。
使用 Swift Package Manager 将此仓库添加到您的项目中
您需要创建一个 CatPrinter
的实例并在会话期间保留它。
例如:
import CatPrint
@MainActor
final class MyViewModel {
let printer = CatPrinter(settings: .default)
}
然后您可以使用 try await printer.startScan()
搜索打印机。 如果 CoreBluetooth 未准备好扫描,将引发 bluetoothNotPoweredOn
错误。 如果您处理了这个错误,您可以稍后重试。
func searchForPrinters() async {
do {
try await printer.startScan()
} catch CatPrinterError.bluetoothNotPoweredOn {
try? await Task.sleep(nanoseconds: 1_000_000_000)
await searchForPrinters()
} catch { }
}
您可以通过订阅 availablePrinters
来监听可用的 Cat 打印机,并在您选择的方法中处理它。 此属性会在打印机连接和断开连接时自动更新。
await printer.$availablePrinters
.dropFirst()
.filter { $0.isEmpty == false }
.map { State.foundPrinters(Array($0)) }
.receive(on: RunLoop.main)
.assign(to: &$state)
最后,一旦你有了想要打印的打印机 - 你可以通过提供一个 CGImage
来进行打印。 CGImage
将自动重采样到打印机的像素宽度并转换为灰度。 通过 imageProcessing
属性可以使用一些图像处理选项,例如抖动。
do {
try await printer.printImage(
image, // CGImage
printer: printerInfo
)
} catch CatPrinterError.noSuchPrinterConnected {
} catch { }