Odoo生成PDF报告却输出HTML内容的问题求助
解决Odoo 16房产报价PDF生成为HTML内容的问题
以下是针对该问题的排查与解决步骤:
1. 确认报表XML的输出类型配置
检查你的报表XML定义,确保report_type属性设置为qweb-pdf,而非qweb-html。示例配置如下:
<report id="report_property_quotation" model="property.quotation" string="房产报价单" report_type="qweb-pdf" name="your_module.report_property_quotation_template" file="your_module.report_property_quotation_template" attachment_use="True" />
若误设为qweb-html,Odoo会直接输出HTML内容,不触发wkhtmltopdf转换流程。
2. 验证wkhtmltopdf的实际运行状态
虽然已解决“未找到”提示,但需确认工具本身可正常工作:
- 登录服务器终端,执行
wkhtmltopdf --version,确认返回有效版本信息(Odoo 16推荐使用0.12.6及以上版本)。 - 测试基础转换功能:执行
echo "<h1>测试内容</h1>" > test.html && wkhtmltopdf test.html test.pdf,检查生成的test.pdf能否正常打开。若此步骤失败,需重新安装适配服务器系统的wkhtmltopdf包。
3. 检查Odoo系统参数配置
进入Odoo后台,打开设置 > 技术 > 参数 > 系统参数,重点核查:
report.url:本地部署时需设为Odoo的本地访问地址(如http://localhost:8069),远程服务器可设为公网访问地址或http://127.0.0.1:8069(前提是Odoo监听本地端口),确保wkhtmltopdf能从服务器内部拉取渲染后的HTML内容。report.background:建议保持默认值或设为True,若设为False可能干扰PDF生成流程。
4. 排查QWeb模板的语法与资源问题
模板的语法错误或资源加载失败可能导致转换中断,返回原始HTML:
- 先使用极简模板(仅包含基础HTML结构与静态文本)测试,确认能否生成正常PDF,逐步恢复原有模板内容定位问题点。
- 检查模板中动态指令(如
t-foreach、t-if)的语法正确性,以及引用的CSS、图片等静态资源路径是否可被服务器访问。
5. 通过Odoo日志定位深层问题
开启调试级日志运行Odoo:./odoo-bin --log-level=debug,点击打印按钮后查看日志,重点关注wkhtmltopdf相关报错(如权限不足、资源加载超时、模板渲染异常等),根据日志信息针对性解决。
内容的提问来源于stack exchange,提问作者Vincent Lagache
相关产品推荐
相关产品推荐

