Skip to content

Multiple named page templates - #8

Closed
connorferster wants to merge 2 commits into
mainfrom
features/multi-page-templates
Closed

Multiple named page templates#8
connorferster wants to merge 2 commits into
mainfrom
features/multi-page-templates

Conversation

@connorferster

Copy link
Copy Markdown
Contributor

Replaces the first-page/remaining-pages document model with named page templates, and adds source-level switching.

Changes

  • _doc.templates is a mapping of name → {margins, background}; the first entry is the starting template. Page size and orientation remain document-wide.
  • _pagebreak: <name-or-index> breaks and switches the template for following pages; _nextpagetemplate: <name-or-index> arms the switch for the next break.
  • Template flow is managed by ReportLab's NextPageTemplate. Each PageTemplate records a page-index → template-name map during the build so post-processing overlays the correct background per page.
  • Config merge treats templates as a whole mapping from the highest-priority layer.

Breaking change

Pre-1.0 config break: first-page / remaining is removed; documents adopt the templates: schema. Migrates defaults, test configs, examples, and docs.

Testing

Tests cover template resolution (name/index), both blocks, the build-time page→template map, config merge, and per-template background overlay.

Merge notes

Branched off main. Independent of the other two feature PRs (touches config/doctemplate.py, pdf_postprocessing.py, context_builder.py, report_reader.py) — no expected overlap with the list/text-style branches. Also fixes the _doc.background bare-string validation issue those branches still carry.

🤖 Generated with Claude Code

connor-sp and others added 2 commits August 13, 2026 20:41
Replace the first-page/remaining-pages document model with named page
templates. `_doc.templates` is a mapping of name -> {margins, background};
the first entry is the starting template. Page size and orientation remain
document-wide.

Add source-level template switching:
- `_pagebreak` accepts an optional template name/index for following pages
- `_nextpagetemplate` arms the template to switch to at the next break

Template flow is managed by ReportLab's NextPageTemplate. Each PageTemplate
records a page-index -> template-name map during the build so post-processing
can overlay the correct background per page. Config merge treats `templates`
as a whole mapping from the highest-priority layer.

Migrate defaults, test configs, examples, and docs to the new schema; add
tests covering template resolution, both blocks, the build-time page map,
and the config merge.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants