Page-item types
The six IDML page-item elements — TextFrame, Rectangle, Oval, GraphicLine, Polygon, and Group — the key attributes of each, and which ones the renderer honours.
IDML has six page-item elements, and they all share one skeleton — they differ only in a handful of fields.
In short: The six page-item elements are TextFrame, Rectangle, Oval,
GraphicLine, Polygon, and Group. Every one of them carries the same
skeleton — a Self id, an ItemTransform, a PathGeometry, paint attributes,
and an AppliedObjectStyle — and the differences between them come down to a few
extra fields each. This page is the reference: one attribute table per element,
with each attribute marked, from the parser, for exactly what our renderer does
with it.
The two filled shapes below — a Rectangle with a red fill and an Oval with a
blue fill — are the smallest example that exercises this page. Neither carries
text or an image; the FillColor alone makes them paint.
A Rectangle and an Oval, each painted by nothing but a FillColor swatch.
Spreads/Spread_uspread.xml<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<idPkg:Spread xmlns:idPkg="http://ns.adobe.com/AdobeInDesign/idml/1.0/packaging" DOMVersion="20.0">
<Spread Self="uspread" PageCount="1" BindingLocation="0" ShowMasterItems="true" AllowPageShuffle="true" ItemTransform="1 0 0 1 0 0">
<Page Self="upage" Name="1" AppliedMaster="umaster" ItemTransform="1 0 0 1 0 0" GeometricBounds="0 0 841.89 595.276" MasterPageTransform="1 0 0 1 0 0"/>
<Rectangle Self="urect" ContentType="GraphicType" AppliedObjectStyle="ObjectStyle/$ID/[None]" Visible="true" Name="$ID/" ItemTransform="1 0 0 1 80 100" FillColor="Color/Red" StrokeColor="Swatch/None" StrokeWeight="0">
<Properties>
<PathGeometry>
<GeometryPathType PathOpen="false">
<PathPointArray>
<PathPointType Anchor="0 0" LeftDirection="0 0" RightDirection="0 0"/>
<PathPointType Anchor="0 200" LeftDirection="0 200" RightDirection="0 200"/>
<PathPointType Anchor="300 200" LeftDirection="300 200" RightDirection="300 200"/>
<PathPointType Anchor="300 0" LeftDirection="300 0" RightDirection="300 0"/>
</PathPointArray>
</GeometryPathType>
</PathGeometry>
</Properties>
</Rectangle>
<Oval Self="uoval" ContentType="GraphicType" AppliedObjectStyle="ObjectStyle/$ID/[None]" Visible="true" Name="$ID/" ItemTransform="1 0 0 1 200 380" FillColor="Color/Blue" StrokeColor="Swatch/None" StrokeWeight="0">
<Properties>
<PathGeometry>
<GeometryPathType PathOpen="false">
<PathPointArray>
<PathPointType Anchor="0 0" LeftDirection="0 0" RightDirection="0 0"/>
<PathPointType Anchor="0 240" LeftDirection="0 240" RightDirection="0 240"/>
<PathPointType Anchor="240 240" LeftDirection="240 240" RightDirection="240 240"/>
<PathPointType Anchor="240 0" LeftDirection="240 0" RightDirection="240 0"/>
</PathPointArray>
</GeometryPathType>
</PathGeometry>
</Properties>
</Oval>
</Spread>
</idPkg:Spread>
Attributes shared by every page item
These appear on all six elements (the Color/* references resolve against
Resources/Graphic.xml):
| Attribute · (common page-item attributes) | Type / values | Support | Notes |
|---|---|---|---|
| Self | string id | Supported | The item id. Used by groups, threading (NextTextFrame), and ItemLayer references. |
| ItemTransform | "a b c d tx ty" | Supported | Affine placement onto the page. Composed with any enclosing Group transform. |
| PathGeometry | child element | Supported | The anchor outline. Real exports carry it even for plain rectangles. See the geometry chapter. |
| FillColor | swatch ref (e.g. "Color/Red") | Supported | Resolved against Graphic.xml. "Swatch/None" → no fill. |
| FillTint | double (0–100, or -1) | Supported | Tints the resolved swatch toward paper. -1 inherits. |
| StrokeColor | swatch ref | Supported | "Swatch/None" → no stroke. |
| StrokeWeight | double (pt) | Supported | Stroke thickness. 0 → no stroke drawn. |
| StrokeType | stroke-style ref | Supported | Built-in Solid / Dashed / Dotted map to dash patterns; custom StrokeStyle defs fall back to solid. |
| AppliedObjectStyle | ObjectStyle ref | Supported | Supplies defaults for unset fill / stroke / inset. Resolved by the scene layer. |
| ItemLayer | Layer ref | Supported | The item is skipped when its layer is hidden or non-printable. |
TextFrame
A TextFrame is the only member with a ParentStory: the story id whose
paragraphs flow into the frame. Its ContentType is TextType. Everything
else is shared.
| Attribute · TextFrame | Type / values | Support | Notes |
|---|---|---|---|
| ParentStory | Story id (e.g. "u10") | Supported | The story whose text this frame composes. Resolved against the design map’s story list. |
| ContentType | "TextType" | Parsed, not yet rendered | Role marker. The parser infers "text" from the element name + ParentStory rather than reading this attribute. |
| NextTextFrame | TextFrame id | Supported | The frame that continues the story when it overflows. Drives threading. |
| AppliedObjectStyle | ObjectStyle ref | Supported | Real-world frames lean on this for fill / stroke far more than the per-element attributes. |
The TextFramePreference child — insets, vertical justification, auto-sizing,
first baseline — has its own reference page.
Rectangle
The workhorse. A Rectangle with a FillColor is a colour panel; with a nested
<Image> it is a picture frame; with neither it is an empty outline. Its
ContentType is GraphicType (or Unassigned).
| Attribute · Rectangle | Type / values | Support | Notes |
|---|---|---|---|
| PathGeometry | child element | Supported | Four corner anchors for a plain rect. The parser keeps the anchors and routes non-rectangular outlines through the polygon path. |
| CornerOption | enum | Parsed, not yet rendered | None renders square; every non-square variant (Rounded, Bevel, Inset, …) is drawn as Rounded for now. See the geometry chapter. |
| StrokeAlignment | Center / Inside / Outside | Supported | Inside / Outside approximated by inset/outsetting the path by half the stroke weight. |
| GradientFillAngle | double (deg) | Supported | Direction of a gradient fill around the frame centre. Pairs with GradientFillLength. |
| FillColor / StrokeColor / StrokeWeight | see common | Supported | The paint that makes the shape visible. |
Oval
Same fill and stroke story as Rectangle. Its geometry is the ellipse
inscribed in the path's bounding box — a square outline yields a circle, as in
the example above.
| Attribute · Oval | Type / values | Support | Notes |
|---|---|---|---|
| PathGeometry | child element | Supported | The bounding-box outline. The renderer inscribes the ellipse inside it. |
| FillColor / FillTint | swatch ref / double | Supported | Fills the ellipse. |
| StrokeColor / StrokeWeight | swatch ref / double | Supported | Strokes the ellipse outline. |
| AppliedObjectStyle | ObjectStyle ref | Supported | Defaults for unset paint. |
GraphicLine
A straight stroke with no fill region. IDML stores the line implicitly: its two
endpoints are the top-left and bottom-right corners of the path's bounding box.
A GraphicLine has no FillColor field — only stroke attributes mean anything.
| Attribute · GraphicLine | Type / values | Support | Notes |
|---|---|---|---|
| PathGeometry | child element | Supported | Two anchors. The endpoints are the bounds’ opposite corners. |
| StrokeColor | swatch ref | Supported | The line colour. "Swatch/None" makes the line invisible. |
| StrokeWeight | double (pt) | Supported | Line thickness. |
| StrokeType | stroke-style ref | Supported | Dash pattern for dashed / dotted lines. |
Polygon
An arbitrary closed outline — charts, stars, cut-out shapes. The parser keeps the full anchor list (and per-contour boundaries for compound paths).
| Attribute · Polygon | Type / values | Support | Notes |
|---|---|---|---|
| PathGeometry | child element | Supported | The full anchor outline. Multiple GeometryPathType children make a compound path (e.g. a shape with a hole). |
| FillColor / FillTint | swatch ref / double | Supported | Fills the closed outline. |
| StrokeColor / StrokeWeight | swatch ref / double | Supported | Strokes the outline. |
| AppliedObjectStyle | ObjectStyle ref | Supported | Defaults for unset paint. |
Group
A Group is not a shape — it is a container. Its children are the page items it
clusters, and its own ItemTransform composes onto each of them so the whole
cluster moves, scales, or rotates as one. It carries no fill or stroke of its
own.
| Attribute · Group | Type / values | Support | Notes |
|---|---|---|---|
| Self | string id | Supported | The group id. |
| ItemTransform | "a b c d tx ty" | Supported | Composed onto every member. The parser lifts each child out with the composed transform already applied. |
| (member page items) | child elements | Supported | Rectangle / Oval / GraphicLine / Polygon / TextFrame / nested Group, in document order. |
Group membership and the group-level transparency block get a fuller treatment on the Groups page.
Frequently asked questions
Which attributes do all six page items share?
Every page item carries a Self id, an ItemTransform, a PathGeometry, paint
attributes (FillColor, FillTint, StrokeColor, StrokeWeight, StrokeType),
an AppliedObjectStyle, and an ItemLayer reference. The renderer honours all of
these; the per-element tables above cover only the fields that differ.
What is the difference between a Rectangle and an Oval in IDML?
Both share the same fill-and-stroke story, but their geometry differs: a
Rectangle paints the path outline directly, while an Oval paints the ellipse
inscribed in the path's bounding box — so a square Oval outline yields a
circle.
Are corner options and line arrowheads rendered?
Not fully. CornerOption is parsed but every non-square variant (Rounded, Bevel,
Inset, and so on) is drawn as Rounded for now, and GraphicLine arrowheads
(LeftLineEnd / RightLineEnd) are parsed but not yet drawn — the line renders as
a plain stroke.