Ad – 728×90
🎨 Odoo Studio

Creating PDF Reports with Odoo Studio

Odoo's built-in reports (invoices, sale orders, delivery slips) are built with QWeb templates — Odoo's XML-based report engine. Studio provides a visual report builder that lets you create entirely new PDF reports or modify existing ones without writing QWeb XML. You choose a layout, pick your data columns, brand the header and footer, and download a pixel-perfect PDF — all through the browser.

⏱️ 20 min 🎯 Beginner 📅 Updated 2026

Reports in Odoo Studio

Reports in Studio are stored as two linked records:

  • ir.actions.report — the action record that triggers PDF generation. This defines which model it runs on, the paper format, and the output filename.
  • QWeb template (ir.ui.view with type='qweb') — the HTML/XML template that defines the layout. Odoo renders it to PDF using wkhtmltopdf.

Studio generates both records automatically when you create a new report. If you later export to a module, both are included in the export as XML.

Creating a New Report

  1. Open Studio on the app you want to add a report to (e.g., open a Project Task record and click Studio).
  2. In the left panel, click the Reports tab (document icon).
  3. Click New Report.
  4. Enter a Report name (e.g., "Task Summary Sheet").
  5. Choose a Layout (see next section).
  6. Click Create Report. Studio opens the report canvas in edit mode.

After creating the report, it automatically appears in the Print menu of the corresponding model's records.

Report Layout Options

Studio offers three starting layouts:

LayoutStructureBest for
TableHeader, a data table with selectable columns, footerListing records — orders, invoices, inventory counts
GroupedRecords grouped by a field, with subtotals per groupSummary reports — sales by salesperson, tasks by project
BlankAn empty canvas with only header and footerCustom-formatted documents — certificates, letters, labels
💡
Choosing the right layout

For most business documents (packing slips, custom order sheets), start with Table. For management summaries, use Grouped. For anything that doesn't fit a table structure (e.g., a certificate of completion, a formal letter), start with Blank and add text and field placeholders manually.

Ad – 336×280

Adding Fields to the Report

In the report canvas:

  • Click a column header in the table to select it, then open the Field dropdown in the right panel to choose which model field this column displays.
  • Add a new column by clicking the + button at the end of the table header row. Choose the field from the panel.
  • Remove a column by selecting it and clicking the trash icon.
  • Drag column headers to reorder columns.

Formatting numbers and dates

After selecting a field column, the right panel shows formatting options:

  • Format for numeric fields: choose number of decimal places or percentage display.
  • Format for date fields: choose short date, long date, or datetime.
  • Label: change the column header text shown in the report.

Click the header area at the top of the report canvas to edit it. The header typically contains:

  • Company logo — automatically pulled from res.company.logo. Toggle visibility in the header properties.
  • Report title — the name you gave the report, editable directly on the canvas.
  • Company name and address — auto-populated from the company record.
  • Record reference — e.g., the order number or task ID.

Click the footer area to edit it. Footer elements include:

  • Page numbers — "Page X of Y" — toggle on/off from the footer properties.
  • Company tagline or website — add via a text field in the footer editor.

Paper format selection

In the Report Properties panel (right panel, with no specific element selected), choose the Paper Format: A4, Letter, A3, or other standard sizes. You can also choose orientation: Portrait or Landscape.

Downloading and Testing

Click the Preview button in the Studio report toolbar to generate a sample PDF from the most recently opened record. The PDF opens in a new browser tab so you can verify layout, formatting, and data accuracy before sharing.

To test from a real record:

  1. Exit Studio.
  2. Open any record of the relevant model.
  3. Click the Print button (or Actions → Print) in the record's header.
  4. Your new report appears in the dropdown list alongside Odoo's built-in reports.

Attaching a report to an email template

Studio reports can be automatically attached to outgoing emails:

  1. Go to Email Templates in Settings → Technical → Email → Templates (developer mode required).
  2. Open the relevant email template (e.g., "Sales Order: Confirmation").
  3. In the Attachments section, add a new report attachment and select your Studio report from the list.

Now when that email template is sent (manually or via an automation), the PDF is attached automatically.

💡
Under the hood

All Studio reports are QWeb-based. When you export to a module, the report template is exported as a QWeb XML file that you can edit with full HTML/CSS control. This is useful when Studio's visual builder doesn't give you enough layout flexibility.

📋 Key Points

  • Studio reports are stored as ir.actions.report + QWeb template (ir.ui.view) records.
  • Three starting layouts: Table (column-based), Grouped (with subtotals), Blank (freeform).
  • Add, remove, and reorder columns from the report canvas; format numbers and dates in the right panel.
  • Header: company logo, report title, record reference — all auto-populated from company settings.
  • Footer: page numbers, tagline — toggle options in footer properties.
  • Choose paper format (A4, Letter) and orientation (portrait/landscape) from Report Properties.
  • Preview generates a sample PDF; reports appear under the Print button on each record.
  • Attach reports to email templates for automatic PDF delivery on outgoing emails.

FAQ

Can I include data from related models in a Studio report? +

Yes. When adding a field column to a Table layout, the field picker allows you to traverse Many2one relationships. For example, on a Sale Order report, you can include fields from the customer record (partner_id.name, partner_id.phone). For One2many lines (like order lines), you can add a sub-table section that iterates over the lines.

Why does my PDF look different from the preview? +

Odoo uses wkhtmltopdf to render the QWeb HTML template to PDF. Some CSS properties that work in a browser may render differently via wkhtmltopdf (especially flexbox and certain CSS3 properties). If you see layout discrepancies, export the report to a module and refine the QWeb template HTML/CSS directly.

Can I set different paper formats for different reports? +

Yes. Each report has its own ir.actions.report record which specifies the paper format (paperformat_id). In Studio, use the Report Properties panel to select the format per report. You can also create custom paper formats via Settings → Technical → Reporting → Paper Formats.

Can Studio reports show charts or graphs? +

No. Studio's report builder is designed for tabular and text data. Charts and graphs in PDF reports require custom QWeb templates with embedded SVG or third-party charting libraries — this is beyond Studio's visual builder and requires code. Odoo's built-in Spreadsheet or dashboard views are better suited for data visualization.