pzzzy/rongta-f11-open

GitHub: pzzzy/rongta-f11-open

该项目用纯 Swift 为荣泰 F11 打印机提供了一套净室开发的无二进制驱动和 PDF 打印方案,彻底摆脱厂商专有驱动的依赖。

Stars: 0 | Forks: 0

# Rongta F11 开源驱动 这是一个针对 macOS 的 Rongta F11 打印协议的净室开发、无二进制块的 Swift 实现。 本代码库允许应用程序渲染 PDF 或生成光栅页面,并将其直接发送到 F11,而无需安装或分发 Rongta 的专有驱动程序、过滤器、PPD、DLL 或 Intel 二进制文件。 ## 功能 - 原生 Apple Silicon Swift 库 - PDFKit/CoreGraphics 参考渲染器 - 确定性 1-bit ordered-Bayer 转换 - 净室 Huffman 树构建与序列化 - RTProtocol 组帧与带种子的 CRC-32 - 独立的生成流解码器与验证 - 源代码可见的 libusb 发送器 - 双重 CLI/AppKit 拖放参考应用程序 - 无专有二进制块 - 无需 Rosetta、CUPS 过滤器、PPD 或 Python 运行时 ## 流水线 ``` PDF or 8-bit grayscale page → 1664 × page-height grayscale canvas → 1592-dot / 199-byte monochrome rows → Huffman tree + compressed rows → A3 1E 1C RTProtocol frames → USB bulk OUT endpoint 0x01 → F11 ``` 在 USB 传输之前,参考应用程序会独立解码完整的生成流,并且除非每一行恢复的数据都与预期的光栅完全一致,否则拒绝打印。 ## 环境要求 - macOS 13 或更高版本 - Swift 6 / Xcode 或 Command Line Tools - 用于物理 USB 传输的 libusb ``` brew install libusb ``` 协议编码、解码和空运行不需要 libusb。 ## 构建与测试 ``` swift run F11CoreTests swift build -c release ``` 构建自包含的本地 App Bundle: ``` ./Scripts/build-app.sh ``` 输出: ``` dist/F11 PDF Printer.app dist/f11print ``` ## CLI ``` dist/f11print document.pdf ``` 安全的空运行: ``` dist/f11print --dry-run --output /tmp/f11-preview document.pdf ``` 选项: ``` --dry-run Generate and validate without USB transmission --output DIR Preserve grayscale, PNG preview, and .f11 stream --density 1-15 Default: 8 --speed N Default: 16 --copies 1-255 Default: 1 --help ``` ## 使用库 将此代码库添加为 Swift package,并依赖于 `F11PrintCore`。 ``` import F11PrintCore let gray = [UInt8](repeating: 255, count: 1664 * 2233) let stream = try F11JobEncoder.encode( gray: gray, sourceWidth: 1664, sourceHeight: 2233, speed: 16, density: 8, tracking: 0 ) // Strongly recommended before transport: let decoded = try F11JobDecoder.decode(stream) precondition(decoded.rows.count == 2233) ``` 该库刻意不打开 USB 设备。应用程序可以使用包含的 `Helpers/f11usb.c`、直接使用 libusb,或其他适合其平台的传输方式。 ## 协议文档 - [协议规范](Docs/PROTOCOL.md) - [架构与集成](Docs/INTEGRATION.md) - [净室来源说明](Docs/PROVENANCE.md) 已验证的设备标识为 USB VID `0x0FE6`、PID `0x811E`、接口 0、批量 OUT endpoint `0x01`。 ## 已知范围 此实现针对在 203 dpi 下测试过的 Rongta F11。尽管在某些供应商包中存在共享的协议组帧,但它不声称与同系列的 Rongta 型号兼容。打印不需要状态读取,且被测试的设备未返回应用程序级别的确认信息。 默认渲染器使用从测试设备中学习到的 24 点左侧校准修正。机械对齐可能会有所不同;应用程序可以配置渲染偏移量。 ## 安全性 - 从 `--dry-run` 开始并检查生成的产物。 - 确保打印机装入正确的介质。 - 不要发送任意或未经验证的 `.f11` 数据。 - 参考应用程序在传输前会验证组帧、CRC、树重建和光栅一致性。 安全问题应按照 [SECURITY.md](SECURITY.md) 进行报告。 ## 许可证 本代码库中的原始源代码和文档均在 MIT 许可证下授权。参见 [LICENSE](LICENSE)。 libusb 是一个独立的项目,采用 LGPL-2.1-or-later 许可证授权。构建脚本可能会将您本地安装的 libusb 动态库复制到 App Bundle 中;该库仍受 libusb 许可证的约束,不属于本代码库源代码许可证的一部分。 不包含任何 Rongta 专有二进制文件、PPD、反编译代码或提取的源代码。
标签:Clean-room, PDF渲染, Rongta F11, Swift, 打印机驱动, 硬件通信