Fast PDF Reports
Every PDF report in Odoo, rendered in-process instead of through the abandoned wkhtmltopdf binary. Your existing QWeb templates are untouched, the page count is identical, and printing stops being the slowest thing your users do.
How much faster, exactly
Median of three runs on the same machine and database, driven through Odoo's own _render_qweb_pdf so the numbers reflect what a user actually waits for. Page counts were verified identical in every case.
Much of the gain is architectural rather than raw engine speed. wkhtmltopdf spawns a fresh process for every print, sleeps a full second waiting for the JavaScript that stamps page numbers, and fetches every stylesheet, logo and barcode back over HTTP into Odoo. This module does none of those things.
It was archived in 2023
Upstream development stopped, the last release was 2020, and the package was dropped from Debian testing in 2025. Its rendering engine is a fork of WebKit frozen around 2012 — it has no flexbox, which is what Bootstrap 5 (and therefore every modern Odoo report layout) is built on. Odoo itself now requires a specially patched build just to get working headers and footers.
This module renders with PlutoPrint (over the PlutoBook engine): a maintained C++ paged-media engine with proper flexbox, real CSS paged media, running headers and page counters — running inside your Odoo worker, with no subprocess at all.
What you get
Built to be a drop-in replacement, not a science project.
Your templates, unchanged
Standard and custom QWeb reports both work as they are. Headers, footers, logos and Page X / Y numbering all keep working.Identical pagination
wkhtmltopdf's non-standard pixel scale is reproduced deliberately, so a nine-page invoice stays nine pages. Covered by an automated test.Nothing else to install
Onepip install plutoprint. The wheel bundles its own native libraries — no apt packages, no GTK, no Chromium download.
Assets never leave the worker
Stylesheets, images and barcodes are read straight from the database. Anything else is refused, so a report can no longer be used to fetch arbitrary URLs.Per-report control
A PDF Engine field on every report record. Pin any single report back to wkhtmltopdf without touching the rest.Loud, not silent
If a report ever fails to render, it falls back to wkhtmltopdf and logs an error at ERROR level — so you find out, instead of a customer finding out.Works with the rest of your stack
The engine is swapped at the single point where Odoo turns rendered HTML into PDF bytes. Everything that post-processes the result keeps working untouched, including:
- Factur-X / ZUGFeRD and UBL invoice attachments, and PDF/A conversion
- ZATCA (Saudi) and other localisation QR overlays, including the Swiss QR-bill
- Expense report attachment merging
- Sale quotation PDF builder (cover pages, product documents, form fields)
- Per-record attachment saving and batch printing
Tested on Odoo 19 Community and Enterprise, Python 3.11+.
Before you install
One Python package is required on the server:
On Odoo.sh, add plutoprint to requirements.txt at the root of your repository. On Docker, add the same line to your image.
Prebuilt wheels cover Linux x86-64, macOS on Apple Silicon and Windows, for Python 3.10–3.14. Linux ARM64 and Intel macOS need a source build. Keep wkhtmltopdf installed if you want the automatic fallback to stay available.
One difference worth knowing
Layout, geometry and page counts match wkhtmltopdf. Typography is slightly better, which means it is not pixel-identical: wkhtmltopdf embeds only the regular weight of the report font and fakes bold by thickening it, while this module embeds the real bold face and uses it. Text looks cleaner; bold looks a little lighter than you may be used to.
CSS Grid and JavaScript inside report templates are not supported. Odoo's standard layouts use neither. If a report ever needs them, pin that one report back to wkhtmltopdf with the PDF Engine field.
Stop waiting for prints
Fast PDF Reports — Odoo 19, Community & Enterprise, LGPL-3.
Riste Kabranov · odoomacedonia.mk · ristecona@gmail.com
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Lines of code | 819 |
| Technical Name |
cons_fast_reports |
| License | LGPL-3 |
| Website | https://odoomacedonia.mk |
Please log in to comment on this module