经过大量搜索,我在报告中发现了 Odoo 中默认字体的问题。 错误是,如果我在报告中使用 设置文本,通常这两者之间的文本应该变强,但整个页面上的所有文本都会变强。
<t t-set="information_block" style="font-family:arial">
<t t-if="doc.partner_shipping_id == doc.partner_invoice_id">
Invoicing and Shipping Address:
</t>
<t t-else="">
<strong>Invoicing Address:</strong>
</t>
<div t-field="doc.partner_invoice_id" t-options="{"widget": "contact", "fields": ["address", "name", "phone"], "no_marker": True, "phone_icons": True}"/>
<t t-if="doc.partner_shipping_id != doc.partner_invoice_id">
Shipping Address:
<div t-field="doc.partner_shipping_id" t-options="{"widget": "contact", "fields": ["address", "name", "phone"], "no_marker": True, "phone_icons": True}"/>
</t>
</t>
Odoo 设置为默认字体 Lato。该代码来自我的自定义模块,但它是原始 report_saleorder_document 的副本。 如果我用 wkhtmltopdf 打印销售订单报告,也会出现该错误。
但是如果我在代码中将字体设置为 arial:
<div style="font-family:arial;"> <strong>Invoicing Address:</strong> </div>
pdf 正确:
有谁知道故障出在哪里以及如何正确解决它? 谢谢。
HTML 和 PDF 之间的字体转换存在很多问题。
在这种情况下,您似乎已经避免了由于权限有限或位置错误而丢失字体的常见故障,因此字体是正确的 Lato。但请注意,作为常规,它已经比许多其他功能强大得多,在这里我们看到“正常”和 HTML 之间的划分
<strong>
更改了左侧的功能,但没有将样式从常规更改为粗体,如右侧所示。
所以答案是需要从一种字体更改为另一种字体,即使它是同一个家族。
有多种方法可以尝试将线条划分为样式,但
strong
和 b
本身不会将字体从一种更改为另一种。这里我通过 style class="b" 添加了内联样式更改
b { font-family: 'Lato-Bold'; font-style: bold; font-weight: 800;}
请注意,PDF 名称不是 Lato-Bold.TTF 名称,而是内部 LatoBold 名称,并且具有正确的效果。
@font-face { font-family: 'Lato-Bold'; font-style: bold; font-weight: bold; src: url("file:///C:/Users/lez/Downloads/Apps/Fonts/ttf/Lato-Bold.ttf") format("truetype"); }