Odoo POS打印58mm收银小票 - xiaohao0576/odoo-doc GitHub Wiki

小票收银机种类

在打印机点密度=203DPI情况下

80mm小票打印机,实际打印宽度有72mm,每行可打印576个像素点

58mm小票打印机,实际打印宽度有48mm,每行可打印384个像素点

Odoo收银小票默认宽度

Odoo的收银小票,默认图像宽度是512个像素点,打印到80mm的小票上,左右还可以有32个像素的边距。但58mm的小票就不能完全打印512像素,所以需要修改odoo的源码

如何修改

只需要重写pos模块中一个css文件的pos-receipt-print类定义

文件路径odoo\addons\point_of_sale\static\src\css\pos_receipts.css

相关js代码

    async printReceipt(receipt) {
        if (receipt) {
            this.receiptQueue.push(receipt);
        }
        let image, printResult;
        while (this.receiptQueue.length > 0) {
            receipt = this.receiptQueue.shift();
            image = this.processCanvas(
                await htmlToCanvas(receipt, { addClass: "pos-receipt-print" })
            );

具体步骤

准备一个css文件mypos/static/src/css/pos_receipts.css,内容如下:

.pos-receipt-print {
    width: 384px !important;   /* change to 512px for 80mm printers */
    font-size: 22px;
    color: #000000;
}

manifest.py文件中,需要把自定义css加入pos的assets

    'assets': {
        'point_of_sale._assets_pos': [
            'mypos/static/src/css/pos_receipts.css',
        ],
    },

参考下面的文档,把文件打包成一个可以导入的模块,这个模块能在odoo online版本使用

https://www.odoo.com/documentation/19.0/developer/tutorials/importable_modules.html#module-structure