qianxunman

一般在打印报表时会遇到打印条码的问题,设置如下:

odoo源码的路由配置:

    @http.route([\'/report/barcode\', \'/report/barcode/<type>/<path:value>\'], type=\'http\', auth="public")
    def report_barcode(self, type, value, width=600, height=100, humanreadable=0):
        """Contoller able to render barcode images thanks to reportlab.
        Samples:
            <img t-att-src="\'/report/barcode/QR/%s\' % o.name"/>
            <img t-att-src="\'/report/barcode/?type=%s&amp;value=%s&amp;width=%s&amp;height=%s\' %
                (\'QR\', o.name, 200, 200)"/>

        :param type: Accepted types: \'Codabar\', \'Code11\', \'Code128\', \'EAN13\', \'EAN8\', \'Extended39\',
        \'Extended93\', \'FIM\', \'I2of5\', \'MSI\', \'POSTNET\', \'QR\', \'Standard39\', \'Standard93\',
        \'UPCA\', \'USPS_4State\'
        :param humanreadable: Accepted values: 0 (default) or 1. 1 will insert the readable value
        at the bottom of the output image
        """
        try:
            barcode = request.env[\'ir.actions.report\'].barcode(type, value, width=width, height=height, humanreadable=humanreadable)
        except (ValueError, AttributeError):
            raise werkzeug.exceptions.HTTPException(description=\'Cannot convert into barcode.\')

        return request.make_response(barcode, headers=[(\'Content-Type\', \'image/png\')])

说明:

  1. 其中的type的区分大小写,网上说EAN码只能数字,但是实际测试时,可以包含字母或者特殊字符也是可以扫码出来
  2. 在报表模板中可以使用统一的地址来配置出条码
            <img t-att-src="\'/report/barcode/?type=%s&amp;value=%s&amp;width=%s&amp;height=%s\' %
                (\'QR\', o.name, 200, 200)"/>
  1. type值得不同决定了条码是二维码,还是条形码
    3.1 若要显示条形码,type可以使用\'Code128\', \'EAN13\', \'EAN8\'
    3.2 二维码可以使用\'QR\'
  2. value值为存储得内容
  3. width 为条码得宽度,可以根据情况调整大小
  4. height 为条码得高度

分类:

技术点:

相关文章: