Hello all,
In my journey to deploy an Odoo 18 CE Server from GitHub and configuring Apache Web Server 2.4.62 with HTTPS support, I tested the installation, and all the system works well even printing a PDF invoice or a sale order.
The OS : FreeBSD 14.2-RELEASE-p1 GENERIC amd64
The wkhtmltopdf version : wkhtmltopdf 0.12.6 (with patched qt).
But I get an issue with wkhtmltopdf failing with error : [Invalid Operation Wkhtmltopdf failed (error code: -10)], when I try to print some reports or options, like the examples below :
- Apps --> Sales --> Technical guide :
2025-01-29 15:32:29,548 71602 WARNING odoo18ce odoo.addons.base.models.ir_actions_report: Wkhtmltopdf failed (error code: -10). Message:
2025-01-29 15:32:29,549 71602 WARNING odoo18ce odoo.addons.web.controllers.report: Error while generating report base.report_irmodulereference
Traceback (most recent call last):
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/web/controllers/report.py", line 120, in report_download
response = self.report_routes(reportname, docids=docids, converter=converter, context=context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/odoo/http.py", line 727, in route_wrapper
result = endpoint(self, *args, **params_ok)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/web/controllers/report.py", line 42, in report_routes
pdf = report.with_context(context)._render_qweb_pdf(reportname, docids, data=data)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/odoo/addons/base/models/ir_actions_report.py", line 1007, in _render_qweb_pdf
collected_streams, report_type = self._pre_render_qweb_pdf(report_ref, res_ids=res_ids, data=data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/account/models/ir_actions_report.py", line 74, in _pre_render_qweb_pdf
return super()._pre_render_qweb_pdf(report_ref, res_ids=res_ids, data=data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/odoo/addons/base/models/ir_actions_report.py", line 998, in _pre_render_qweb_pdf
return self._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids), 'pdf'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/sale_pdf_quote_builder/models/ir_actions_report.py", line 17, in _render_qweb_pdf_prepare_streams
result = super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/purchase/models/ir_actions_report.py", line 12, in _render_qweb_pdf_prepare_streams
collected_streams = super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/hr_expense/models/ir_actions_report.py", line 12, in _render_qweb_pdf_prepare_streams
res = super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/account_edi/models/ir_actions_report.py", line 14, in _render_qweb_pdf_prepare_streams
collected_streams = super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/account/models/ir_actions_report.py", line 22, in _render_qweb_pdf_prepare_streams
return super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/odoo/addons/base/models/ir_actions_report.py", line 860, in _render_qweb_pdf_prepare_streams
pdf_content = self._run_wkhtmltopdf(
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/odoo/addons/base/models/ir_actions_report.py", line 611, in _run_wkhtmltopdf
raise UserError(message)
odoo.exceptions.UserError: Wkhtmltopdf failed (error code: -10). Message:
2. Employees --> Administrator --> Settings --> Badge ID --> Print Badge :
2025-01-29 15:40:57,360 71761 WARNING odoo18ce odoo.addons.base.models.ir_actions_report: Wkhtmltopdf failed (error code: -10). Message:
2025-01-29 15:40:57,360 71761 WARNING odoo18ce odoo.addons.web.controllers.report: Error while generating report hr.print_employee_badge
Traceback (most recent call last):
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/web/controllers/report.py", line 120, in report_download
response = self.report_routes(reportname, docids=docids, converter=converter, context=context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/odoo/http.py", line 727, in route_wrapper
result = endpoint(self, *args, **params_ok)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/web/controllers/report.py", line 42, in report_routes
pdf = report.with_context(context)._render_qweb_pdf(reportname, docids, data=data)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/odoo/addons/base/models/ir_actions_report.py", line 1007, in _render_qweb_pdf
collected_streams, report_type = self._pre_render_qweb_pdf(report_ref, res_ids=res_ids, data=data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/account/models/ir_actions_report.py", line 74, in _pre_render_qweb_pdf
return super()._pre_render_qweb_pdf(report_ref, res_ids=res_ids, data=data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/odoo/addons/base/models/ir_actions_report.py", line 998, in _pre_render_qweb_pdf
return self._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids), 'pdf'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/sale_pdf_quote_builder/models/ir_actions_report.py", line 17, in _render_qweb_pdf_prepare_streams
result = super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/purchase/models/ir_actions_report.py", line 12, in _render_qweb_pdf_prepare_streams
collected_streams = super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/hr_expense/models/ir_actions_report.py", line 12, in _render_qweb_pdf_prepare_streams
res = super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/account_edi/models/ir_actions_report.py", line 14, in _render_qweb_pdf_prepare_streams
collected_streams = super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/account/models/ir_actions_report.py", line 22, in _render_qweb_pdf_prepare_streams
return super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/odoo/addons/base/models/ir_actions_report.py", line 860, in _render_qweb_pdf_prepare_streams
pdf_content = self._run_wkhtmltopdf(
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/odoo/addons/base/models/ir_actions_report.py", line 611, in _run_wkhtmltopdf
raise UserError(message)
odoo.exceptions.UserError: Wkhtmltopdf failed (error code: -10). Message:
3. Products --> Product - XYZ --> Print Labels :
2025-01-29 18:26:03,015 60086 WARNING odoo18ce odoo.addons.base.models.ir_actions_report: Wkhtmltopdf failed (error code: -10). Message:
2025-01-29 18:26:03,016 60086 WARNING odoo18ce odoo.addons.web.controllers.report: Error while generating report product.report_producttemplatelabel2x7
Traceback (most recent call last):
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/web/controllers/report.py", line 127, in report_download
response = self.report_routes(reportname, converter=converter, context=context, **data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/odoo/http.py", line 727, in route_wrapper
result = endpoint(self, *args, **params_ok)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/web/controllers/report.py", line 42, in report_routes
pdf = report.with_context(context)._render_qweb_pdf(reportname, docids, data=data)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/odoo/addons/base/models/ir_actions_report.py", line 1007, in _render_qweb_pdf
collected_streams, report_type = self._pre_render_qweb_pdf(report_ref, res_ids=res_ids, data=data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/account/models/ir_actions_report.py", line 74, in _pre_render_qweb_pdf
return super()._pre_render_qweb_pdf(report_ref, res_ids=res_ids, data=data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/odoo/addons/base/models/ir_actions_report.py", line 998, in _pre_render_qweb_pdf
return self._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids), 'pdf'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/sale_pdf_quote_builder/models/ir_actions_report.py", line 17, in _render_qweb_pdf_prepare_streams
result = super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/purchase/models/ir_actions_report.py", line 12, in _render_qweb_pdf_prepare_streams
collected_streams = super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/hr_expense/models/ir_actions_report.py", line 12, in _render_qweb_pdf_prepare_streams
res = super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/account_edi/models/ir_actions_report.py", line 14, in _render_qweb_pdf_prepare_streams
collected_streams = super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/addons/account/models/ir_actions_report.py", line 22, in _render_qweb_pdf_prepare_streams
return super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/odoo/addons/base/models/ir_actions_report.py", line 860, in _render_qweb_pdf_prepare_streams
pdf_content = self._run_wkhtmltopdf(
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/odoo_erp/odoo18ce/odoo18ce_server/odoo/addons/base/models/ir_actions_report.py", line 611, in _run_wkhtmltopdf
raise UserError(message)
odoo.exceptions.UserError: Wkhtmltopdf failed (error code: -10). Message:
Web browser console error output :
Uncaught (in promise) RPC_ERROR: Odoo Server Error
RPCError https://www.odoo18ce.itlinker.local/web/assets/3862aff/web.assets_web.min.js:875
web.assets_web.min.js:3129:338 ..............
To test the reporting engine on Odoo, I tried the creation of a QWeb-based PDF report, to see if I can change some parameters to get past the problem of the error : "UserError odoo.exceptions.UserError Wkhtmltopdf failed (error code : -10)", I have this behavior from the report :
* The QWeb template with "<t t-call="web.external_layout">" : the report is printed without error.
* The QWeb template with "<t t-call="web.internal_layout">" : the report throws the described error.