Work in progress — this reference is being written in the open. Unfinished pages are excluded from search engines.
Paged · IDML Reference
Layout model

Spreads and pages

The IDML Spread and Page elements — the attributes that position a spread on the pasteboard and a page within its spread, and how the parser reads each one.

Intermediate· reference

A Spread is the outer coordinate frame of a layout, and each Page maps its own inner coordinates into that spread.

In short: In IDML, a Spreads/Spread_*.xml part wraps a single <Spread> element, and that spread contains one or more <Page> elements followed by the page items that sit on them. The spread is the outer coordinate frame onto the document's pasteboard; each page carries its own rectangle and an ItemTransform that places it within the spread. This is how the two pages of a facing-pages opening end up side by side. This page is the attribute reference for both elements as the parser actually reads them.

The Spread element

The parser opens the spread and reads two things off the opening tag — its Self id and its ItemTransform — and otherwise treats the spread as a container it walks for pages and page items. The remaining spread-level attributes (binding, page count, flattener settings) are part of the format but are not consulted while building the document.

Attribute · SpreadType / valuesSupportNotes
Selfstring idSupportedThe spread id, e.g. "uspread". Used to identify the spread.
ItemTransformlist of doubles [a b c d tx ty]Parsed, not yet renderedMaps the spread's inner coords onto the document pasteboard. Read and stored; per-page rendering does not need it, so a non-identity value is not yet applied.
PageCountintNot yet parsedHow many pages the spread declares. The parser counts the Page elements it actually finds instead.
BindingLocationintNot yet parsedWhich edge the spread binds on. Not read.
AllowPageShufflebooleanNot yet parsedWhether pages may move between spreads on repagination. Not read.
ShowMasterItemsbooleanParsed, not yet renderedWhether master items display on this spread's pages. The current pass stamps master items per page regardless; see Master spreads.
FlattenerOverrideenumNot yet parsedTransparency-flattener preset for the spread. Not read.

ItemTransform is stored on the spread but, in practice, InDesign limits it to translation plus rotation in 90° steps, and each page already carries its own transform into spread space — so per-page output is correct even while a rotated whole-spread pasteboard is still on the roadmap. Parsed, not yet renderedSpread ItemTransform

The Page element

A <Page> is where the model gets specific. The parser requires a parseable GeometricBounds — a page with no bounds is skipped entirely — and from that one attribute it derives the page rectangle. The rest of the attributes position the page, link it to a master, and record any master-item overrides.

Attribute · PageType / valuesSupportNotes
Selfstring idSupportedThe page id, e.g. "upage".
GeometricBoundsfour numbers "y1 x1 y2 x2" (pt)SupportedThe page rectangle in the page's own inner coords. REQUIRED by the parser — a Page without it is dropped. Order is top left bottom right.
ItemTransformlist of doubles [a b c d tx ty]SupportedMaps the page's inner coords into the spread. Absent ⇒ identity, so the page sits at the spread origin. This is how the two pages of a spread end up side by side.
AppliedMasterstring id (master Self)SupportedThe Self id of the master spread applied to this page. Resolved to a MasterSpread when master items are stamped.
MasterPageTransformlist of doubles [a b c d tx ty]Parsed, not yet renderedPositions the master overlay on this specific page. The translation part is applied when stamping master items; the full matrix is parsed but only the offset is currently used.
OverrideListspace-separated idsSupportedSelf ids of master items this page has overridden. The named master items are not stamped onto the page. See Override resolution.
NamestringSupportedThe user-visible page label as InDesign rendered it ("1", "iii", "A-3", …). Substituted for auto-page-number markers; falls back to the 1-based body-page index when absent.

Why GeometricBounds and ItemTransform are a pair

GeometricBounds describes the page rectangle in the page's own coordinate system, and ItemTransform carries that rectangle into the spread. For a single-page-per-spread layout the transform is identity, so the bounds are the spread-space bounds — which is why simple fixtures behave even if they omit the transform. The moment a spread holds two pages, the left page's ItemTransform translates it to the left of the binding while the right page sits at the spread origin. The full coordinate story — units, axis direction, and how a frame's points compose with these transforms — lives under Geometry & coordinates.

Name and page numbering

Name is the label InDesign already resolved for the page, including any section-driven style (Roman numerals, prefixed labels, and so on). The renderer substitutes it directly for auto-page-number markers. When a page omits Name, the renderer falls back to a naive 1-based body-page index — InDesign <Section> elements are not parsed, so section-driven numbering is only honored to the extent it has already been baked into each page's Name.

Parsed, not yet renderedSection-driven numbering (sections not parsed; naive 1-based fallback)

Section numbering proper is covered under Sections, numbering & variables.

Frequently asked questions

What is the difference between a spread and a page in IDML? A <Spread> is the outer container — the coordinate frame that sits on the document's pasteboard and holds the pages of one opening. A <Page> is a bounded rectangle within that spread, described by its own GeometricBounds and carried into spread space by its ItemTransform. One spread can hold several pages.

Why does a Page need both GeometricBounds and ItemTransform? GeometricBounds gives the page rectangle in the page's own coordinate system, while ItemTransform places that rectangle within the spread. For a single page per spread the transform is identity, so the bounds are also the spread-space bounds; once a spread holds two pages, each page's transform is what sets them side by side.

What happens if a Page has no GeometricBounds? The parser requires a parseable GeometricBounds to derive the page rectangle, so a <Page> without one is skipped entirely. Every other page attribute is optional, but bounds are not.

On this page