You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo 12 CE中使用Pillow 6.0.0合并PNG为PDF报错排查

解决Odoo 12 CE中Pillow保存PDF报KeyError: 'PDF'的问题

我之前碰到过几乎一模一样的情况,问题根源出在Pillow的PDF保存依赖缺失或者插件未被正确加载上,下面是具体的排查和解决步骤:

核心原因分析

Pillow 6.0.0确实支持直接将图片合并保存为PDF,但这个功能依赖PyPDF2库,而且需要确保Pillow的PDF插件能正常加载。你在Odoo外部测试正常,很大概率是测试环境里已经装了PyPDF2,但Odoo的虚拟环境里漏掉了这个依赖包。

步骤1:检查并补装PyPDF2依赖

进入你的Odoo虚拟环境,先检查是否安装了PyPDF2:

pip list | grep PyPDF2

如果没有任何输出,说明没装,执行安装命令(选和Pillow 6.0.0兼容的稳定版本):

pip install PyPDF2==1.26.0

步骤2:在代码中显式加载PDF插件

有时候在Odoo的模块运行环境里,Pillow的PDF插件不会自动加载,你可以在函数开头显式导入插件:

from PIL import Image
from PIL import PdfPlugin  # 强制触发PDF保存插件加载

步骤3:验证Odoo环境中的Pillow功能

进入Odoo的shell环境,确认PDF支持是否正常启用:

source /path/to/your/odoo/virtualenv/bin/activate
odoo shell -c /path/to/your/odoo/config.conf

在shell里执行以下代码:

from PIL import Image
print(Image.SAVE_ALL.get('PDF'))

如果输出不是None,说明PDF功能已经正常生效,此时再测试你的按钮功能应该就能正常运行了。

额外注意事项

  • 确保你保存PDF的路径是Odoo进程有权限写入的(比如系统临时目录/tmp),避免后续出现权限报错。
  • 确认所有要合并的图片都是RGB模式(你的代码里已经满足这一点,没问题),Pillow保存PDF不支持CMYK等其他颜色模式。

内容的提问来源于stack exchange,提问作者edward

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:33:58