Writing your own CUPS printer driver in 100 lines of Python
a year ago
- #ticket-printing
- #cups-driver
- #python
- pretix 1.8版本引入了通过平邮管理票务的运输功能,非常适合高质量的实体票券。
- 测试过的热敏票券打印机:BOCA Lemur和Practical Automation uITL+2003CF,最终选择uITL+因其经济性和设计。
- uITL+没有网络端口且仅支持Windows驱动,与BOCA的多平台支持形成对比。
- 两款打印机均使用FGL(友好幽灵语言)进行通信,需为Linux开发定制驱动。
- 用Python开发了CUPS打印机驱动(rastertofgl),将CUPS光栅格式转换为uITL+所需的FGL指令。
- 选择Python开发驱动以避免交叉编译问题,并利用Pillow库处理图像(抖动、旋转)。
- 使用CUPS的ppdc工具创建PPD文件定义打印机设置,包括纸张尺寸和切刀选项。
- 提供Arch Linux和Debian的驱动安装包,源代码已发布在GitHub。
- 已知问题:基于GTK的PDF查看器会导致过滤器失效,但命令行打印正常。
- 通过pretix提供票券打印及邮寄解决方案,包括打印机和纸张销售服务。