如何在 odoo 中通过 python 代码生成的报告中显示公司徽标

How to show company logo in report generated through python code in odoo

我有一份报告,我想自定义将公司徽标添加到报告中,问题是整个报告是由代码生成的。我想在报告上打印公司徽标,我可以打印表明其工作的公司名称,但带有徽标,似乎由于路径问题它似乎不起作用。 这是我的代码,其中包含我到目前为止所做的片段。

def get_pdf(self, options, minimal_layout=True):
        if not config['test_enable']:
            self = self.with_context(commit_assetsbundle=True)

        base_url = self.env['ir.config_parameter'].sudo().get_param('report.url') or self.env['ir.config_parameter'].sudo().get_param('web.base.url')
        rcontext = {
            'mode': 'print',
            'base_url': base_url,
            'company': self.env.company,
        }

        body = self.env['ir.ui.view'].render_template(
            "account_reports.print_template",
            values=dict(rcontext),
        )
        body_html = self.with_context(print_mode=True).get_html(options)
        logging.info(self.env.user.company_id.name)
        logging.info(self.env.user.company_id.logo)
        test = "<header>"\
               "<img style='width: 7.0cm; height: 1.8cm;' src='/web/binary/{}' alt='logo'/>"\
               "</header>".format(self.env.user.company_id.logo)
        ttt = bytes(test, 'utf-8')

就像我说的,它显示公司名称而不是徽标,即使徽标已在系统中设置。

所以我能够修复它,我记得 odoo 有一个 image_data_url 函数,它用于获取存储在数据库中的图像的路径并显示在 qweb 报告模板中,所以我检查并在 odoo.tools 中找到了该函数,我在我的模型中调用了该函数,将公司徽标作为参数传递给该函数,并在图像 src 属性中调用它,所以它看起来像这样

from odoo import tools
test = "<header style='margin-left: 750px;'>"\
               "<img style='width: 7.0cm; height: 1.8cm;'" \
               "src='{}' alt='logo'/>"\
               "</header>". \
               format(tools.image_data_uri(self.env.user.company_id.logo))
        ttt = bytes(test, 'utf-8')```