You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Docker环境下Odoo 10 QWeb PDF报表Unicode字体支持问题求助

解决Docker环境下Odoo 10 QWeb报表Unicode字体支持问题

这个问题我碰过好多次了——官方Odoo 10的Docker镜像默认只带了基础英文字体,没预装中文、阿拉伯文这类Unicode字体,而本地环境依赖系统自带的完整字体库,所以才会出现本地正常、Docker里报表乱码/字符不显示的情况。下面给你两个靠谱的解决办法:

方法一:自定义Docker镜像,预装所需Unicode字体

这是最稳妥的长期方案,把字体直接打包到镜像里,每次启动容器都不用额外配置:

  1. 新建一个Dockerfile文件,内容如下:
# 基于官方Odoo 10镜像
FROM odoo:10

# 更新源并安装Unicode字体(这里以常用的中文微黑字体为例,你可以换成自己需要的字体,比如阿拉伯字体fonts-arabic)
RUN apt-get update && apt-get install -y --no-install-recommends \
    fonts-wqy-microhei \
    fontconfig \
    && rm -rf /var/lib/apt/lists/*

# 刷新字体缓存,确保wkhtmltopdf能识别到新字体
RUN fc-cache -fv
  1. 构建自定义镜像:
docker build -t odoo10-with-unicode .
  1. 用新镜像启动容器,替换原来的odoo:10镜像即可。

方法二:挂载本地字体到容器(临时/快速验证用)

如果不想重新构建镜像,可以直接把本地系统的字体挂载到容器里,让Odoo能访问:

  1. 启动容器时添加挂载参数,把本地字体目录挂载到容器的系统字体目录(比如本地字体在/usr/share/fonts):
docker run -d \
    -v /usr/share/fonts:/usr/share/fonts \
    -v odoo10-data:/var/lib/odoo \
    -v ./config:/etc/odoo \
    -p 8069:8069 \
    odoo:10
  1. 进入容器刷新字体缓存:
docker exec -it <你的容器ID> bash
fc-cache -fv

验证是否生效

进入容器执行fc-list命令,看看输出里有没有你需要的Unicode字体。然后生成QWeb报表测试,应该就能正常显示Unicode字符了。

另外补充一句:Odoo的QWeb PDF报表是靠wkhtmltopdf生成的,所以只要容器里的wkhtmltopdf能识别到字体,报表就没问题——上面两种方法都是让wkhtmltopdf能访问到Unicode字体。

内容的提问来源于stack exchange,提问作者M.k Hasan

火山引擎 最新活动