在热敏小票上打印条形码和QR Code - xiaohao0576/odoo-doc GitHub Wiki
打印条形码
宽度285,是黄金宽度,不要包含静区,quiet=0
你可能觉得 576 像素的纸很宽,285 像素只有一半。但请记住:条码不是照片,不是铺满全幅就好。如果设为 500 像素,打印机会产生锯齿(有的条 5 像素,有的条 6 像素),导致扫描枪报错。如果设为 285 像素:最窄条恒定为 3 像素。这是物理上的完美匹配。
打印QR Code
如果使用epos打印机,由于打印前,驱动会对图像进行抖动二值化处理,条码码影响不大,但二维码就有可能识别不出来,所以需要改造以下文件
改造思路
- 使用Odoo的前端patch机制,继承扩展javascript的功能
- 需要改造
processCanvas(canvas)和canvasToRaster(canvas), 要做成await,async异步调用 - 使用odoo自带的
BrowserCodeReader函数来识别二维码的区域,文件名是odoo/addons/web/static/lib/zxing-library/zxing-library.js - 获得二维码域名后,改造canvasToRaster函数,让这个函数在二维码区域内不做抖动变化