How to Customize Odoo PDF Reports Without Touching XML
Odoo's default PDF reports are functional but generic. Learn how to apply custom branding, themes, watermarks, and footer HTML to your invoices and sale orders — without editing a single QWeb template.
The Problem with Odoo's Default PDF Reports
Every company that runs Odoo eventually faces the same situation: a client opens your invoice and sees a generic, white document that looks like it was generated by accounting software from 2008. No logo in the right position. No brand colors. No custom footer with bank details.
The standard approach is to edit QWeb XML templates — a process that requires:
- Knowing QWeb syntax
- Understanding Odoo's report rendering pipeline
- Creating an upgraded module to override the templates
- Testing across paper formats (A4, US Letter, US Legal)
- Repeating this for Odoo 17, 18, and 19 separately
This works, but it's slow, fragile across upgrades, and inaccessible to non-developers.
A Better Approach: The Report Designer Pattern
Instead of overriding QWeb templates, a well-built PDF customization module exposes a UI-driven configuration layer on top of the template engine. The engineer builds the template once; the business user customizes it through a settings panel.
This is the pattern used by Hex Report Studio — a Hexalian module that adds a full PDF designer to Odoo's Settings panel.
Here's what this approach enables:
1. Color & Branding
- Primary/secondary color pickers (hex code input)
- Header background and body text colors
- Zebra striping for table rows
- Border colors and page border styles
2. Typography
- 14+ font families (Roboto, Open Sans, Lato, Montserrat, Georgia, Garamond, Arial)
- Granular font size control for headers, body, and table text
- RTL support for Arabic and Hebrew documents
3. Header & Document Information
Toggle visibility for each field individually:
- Partner address, VAT, phone, email
- Document date, delivery date, payment terms
- Salesperson / buyer / source document
- QR code (SEPA EPC payment QR for EU invoices)
4. Order Lines & Totals
- Show/hide columns: line number, product reference, UoM, discount, taxes
- Toggle product images in line items (useful for catalogs and proposals)
- Display mode: classic table, modern cards, or compact widgets
5. Footer Control
- Terms & conditions (auto-pulled from Odoo settings)
- Custom HTML footer: inject bank details, IBAN, social links, multi-column layouts
- Signature box with custom label ("Authorized By", "Approved")
- Print timestamp
6. Custom HTML Header
Inject arbitrary HTML/CSS into the header section. Useful for:
<!-- 2-column header example -->
<div style="display: flex; justify-content: space-between; align-items: center;
border-bottom: 2px solid #155948; padding-bottom: 10px; margin-bottom: 20px;">
<div>
<h1 style="color: #155948; margin: 0; font-size: 24px;">QUOTATION</h1>
<span style="color: #666; font-size: 14px;">Valid until Dec 31</span>
</div>
<div style="text-align: right;">
<strong style="color: #333;">Priority Account</strong><br/>
<span style="color: #666;">+1 (555) 123-4567</span>
</div>
</div>
7. Watermarks
- Custom text: "DRAFT", "CONFIDENTIAL", "ORIGINAL", "COPY"
- Rotation (0–360°), opacity, and font size controls
- Useful for draft invoices and internal documents
The Invoice Immutability Problem (Critical)
One important technicality: Odoo locks PDF files for posted invoices. Once an invoice is confirmed, Odoo stores the PDF permanently to guarantee legal compliance. It will not regenerate automatically when you change your template.
To apply new templates to existing invoices, you must use the "Clear Report Cache" function — which forces Odoo to delete the stored PDFs and regenerate them using your updated design.
This is not a limitation of the module; it's a core Odoo behavior. Sale orders and quotations (mutable drafts) update automatically. Only legal documents (invoices, credit notes) require cache clearing.
Pre-Built Industry Templates
Rather than starting from scratch, a thoughtful PDF module ships with pre-built templates for common industries:
| Template | Target Industry | Style |
|---|---|---|
| Golden Noir | Luxury retail, jewelry | Dark mode with gold accents |
| Royal Sapphire | Finance, legal, consulting | Deep navy, authoritative |
| Platinum Executive | Tech, SaaS, IT services | Clean minimalism |
| Burgundy Elegance | Law firms, wine, estates | Rich burgundy on cream |
| Emerald Professional | Healthcare, medical | Teal green, high legibility |
| Cyber Slate | Cybersecurity, software | Electric blue, compact |
Each template is fully editable — use them as starting points and modify any element to match your brand identity.
Scope Configuration
A critical feature often missing from simpler solutions: the ability to apply different templates to different document types.
You can configure separate designs for:
- All Documents — universal template
- Sale Orders & Quotations — draft documents, no legal restrictions
- Purchase Orders — different branding for supplier-facing documents
- Invoices & Credit Notes — legal documents with cache restrictions
This means your sales quotations can have a branded, colorful design while invoices maintain a clean, formal layout. No compromise.
Where to Get Hex Report Studio
Hex Report Studio is available in the Hexalian Module Store for Odoo 17, 18, and 19. One-time purchase, 100% source code included, instant download.
No subscriptions. No license server. No runtime dependencies. You own the code outright after purchasing.
Looking for a specific Odoo ecommerce module or comparing your options for an Odoo modules list in 2026? Visit the store to review module features, pricing, and compatibility before implementation.
Need Odoo engineering for your business?