Skip to content

feat(layout): enable odd/even header-footer support (w:evenAndOddHeaders)#2804

Open
gpardhivvarma wants to merge 1 commit intosuperdoc-dev:mainfrom
gpardhivvarma:feat/alternate-headers
Open

feat(layout): enable odd/even header-footer support (w:evenAndOddHeaders)#2804
gpardhivvarma wants to merge 1 commit intosuperdoc-dev:mainfrom
gpardhivvarma:feat/alternate-headers

Conversation

@gpardhivvarma
Copy link
Copy Markdown
Contributor

Summary

Closes #2803

  • Thread alternateHeaders from document settings (w:evenAndOddHeaders) through the layout engine so the paginator selects the correct header/footer variant per page
  • Fix getVariantTypeForPage to use document page number (not section-relative) for even/odd selection, matching the rendering side (headerFooterUtils.ts)
  • Add 4 unit tests covering variant selection, default behavior, and titlePg interaction

Problem

Documents with "Different Odd & Even Pages" enabled render the same header/footer on every page. The layout engine hardcoded alternateHeaders = false, preventing correct margin calculations for odd vs even page headers.

Changes

File Change
layout-engine/src/index.ts Add alternateHeaders to LayoutOptions, replace hardcoded false, fix getVariantTypeForPage to use document page number for even/odd
layout-engine/src/index.test.ts 4 tests: even/odd selection, default false, omitted defaults, titlePg + alternateHeaders
PresentationEditor.ts Thread converter.pageStyles.alternateHeaders into layout options
types.ts Add alternateHeaders to ResolvedLayoutOptions

What was already working (no changes needed)

  • Import: w:evenAndOddHeaders parsed from settings.xml
  • Layout Bridge: getHeaderFooterTypeForSection() handles even/odd variant selection
  • Rendering: provider pattern renders whichever variant is selected
  • Export: settings.xml preserved as-is

Test plan

  • bun test in layout-engine — 581/581 passing
  • 4 new alternateHeaders tests verify margin calculation per variant
  • Manual verification with a Word doc using "Different Odd & Even Pages"

…ers)

Thread alternateHeaders from document settings through the layout
engine so the paginator selects the correct header/footer variant
per page. Fixes margin calculation for documents with different
odd and even page headers.

Also fixes getVariantTypeForPage to use document page number
(not section-relative) for even/odd selection, matching the
rendering side (headerFooterUtils.ts).

Closes superdoc-dev#2803
@gpardhivvarma gpardhivvarma force-pushed the feat/alternate-headers branch from b0f0936 to 8c32cb3 Compare April 14, 2026 05:59
@gpardhivvarma
Copy link
Copy Markdown
Contributor Author

@caio-pizzol

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: enable odd/even header-footer support (w:evenAndOddHeaders)

1 participant