Odoo15 POS用CSS打印A4小票PDF不显示背景色问题求助
Odoo 15 POS小票合计区黑底白字PDF打印样式失效解决方案
核心原因:POS小票预览走浏览器原生渲染,能正常识别内联CSS;打印生成PDF走Odoo内置的wkhtmltopdf引擎,默认会忽略页面背景色、强制用默认文字色打印,才会出现预览正常、PDF样式丢失的问题。
按以下优先级操作即可解决:
- 第一步:添加打印场景专属强制渲染CSS
不要仅依赖普通内联样式,在你继承的OrderReceipt.xml文件的样式块中,新增@media print媒体查询规则,强制引擎识别颜色样式,注意替换成你合计区域的实际类名:
所有属性必须加@media print { .receipt-total-area { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; color-adjust: exact !important; background-color: #000000 !important; color: #ffffff !important; } }!important提升权重,避免被Odoo默认的POS打印基础样式覆盖。 - 第二步:调整wkhtmltopdf启动参数(第一步操作后仍失效时执行)
Odoo默认调用wkhtmltopdf时没有开启背景打印权限,需要修改服务配置:- 打开Odoo配置文件,默认路径为
/etc/odoo/odoo.conf - 在
[options]配置段新增参数:webkit_options = --enable-background --print-background yes - 重启Odoo服务,进入POS页面按
Ctrl+F5强制清缓存后重新测试打印
- 打开Odoo配置文件,默认路径为
- 第三步:兼容问题排查
- 颜色值不要用带透明度的rgba格式,wkhtmltopdf对透明色兼容极差,黑底白字直接用纯十六进制色值
#000000和#ffffff即可 - 不要把颜色样式只写在非打印媒体域下,所有打印需要的样式必须放在
@media print规则块内 - 如果修改后样式还是不生效,进入POS设置页点击「清除缓存」,清空POS离线缓存的旧资源后重试
- 颜色值不要用带透明度的rgba格式,wkhtmltopdf对透明色兼容极差,黑底白字直接用纯十六进制色值
内容的提问来源于stack exchange,提问作者Sidharth Panda
相关产品推荐
相关产品推荐

