66f7f6c6441b0c71d78d927d38ad424911a9d886
The CoC was rendering on 2 pages with ~35mm of dead whitespace at the
top. Three compounding causes:
1. Default Odoo paperformat reserves header_spacing=35mm (where the
standard letterhead would sit when using web.external_layout). Our
CoC has its own full-bleed header so that reservation was pure
empty space.
→ New paperformat_fp_coc with header_spacing=0, 8mm all-around
margins, attached to both report_coc_en and report_coc_fr actions.
2. The `<div class="article o_report_layout_boxed">` and nested
`<div class="page">` wrappers inherited Odoo's CSS which applies
`page-break-after: always` on `.page` and additional padding on
`.article`.
→ Dropped both wrappers — template now renders body directly
inside html_container.
3. Inline style block didn't override Odoo's body/main padding.
→ Aggressive !important reset at the top of the style block on
html, body, main, .article, .page, and the hidden header/footer
classes. Also shrunk all paddings by ~30% and bumped base font
to 9pt to guarantee single-page fit.
Verified: PDF is now 1 page, content starts at the top (title flush
with top margin), accreditation logos + customer logo + signature all
render correctly within the single page.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Description
Odoo 19 custom modules
Languages
Python
55.9%
HTML
26.1%
JavaScript
14.9%
SCSS
1.8%
CSS
0.8%
Other
0.4%