0

我想将 Flectra/Odoo 报价的打印 PDF 报告中产品描述的第一行设置为 BOLD,因此我将以下代码添加到我的模型中

@api.multi
def setFirstLineBold(self,txt):
    txt = txt.replace('\n', '<br/>')
    return txt

@api.multi
def render_html(self, docids, data=None):
    report = self.env['report']._get_report_from_name(self._template)  
    docargs = {
        'doc_ids': self._ids,
        'doc_model': report.model,
        'docs': self.env['sale.order'].browse(self._ids),
        'setFirstLineBold': self.setFirstLineBold
    }

    return report_obj.render(self._template, docargs)

然后我在模板中调用了该方法

<t t-foreach="layout_category['lines']" t-as="l">
    <tr class="table-body">
        <span t-esc="doc.setFirstLineBold(l.name)"/></td> 

但随后发生的事情实际上与我想要实现的完全相反:之前存在于描述文本中的格式(换行符),之前在打印的 pdf 报告中以换行符显示,已被完全删除。HTML 换行符<br/>也被打印而不是解释。

如果我只是跑

@api.multi
def setFirstLineBold(self,txt):
    return txt

文本 ( ) 中的所有换行符'\n'似乎也已被删除或未解释。文本显示在一个丑陋的块中......

现在我的问题是:如何为描述文本创建格式?我只想让第一行加粗。

谢谢!

4

1 回答 1

0

使用 RAW 而不是 ESC 可以解决问题:

<span t-raw="doc.setFirstLineBold(l.name)"/>

https://www.odoo.com/forum/help-1/what-is-the-difference-between-t-esc-and-t-raw-92184

于 2021-03-07T20:56:55.293 回答