Visibility and printing
An item is drawn only when its layer is both Visible and Printable — how those two switches gate the renderer, why Locked does not, and the layer features the model leaves flat.
An item is drawn only when its layer is both Visible and Printable; everything else a layer records is ignored at render time.
In short: Of all the switches a layer carries, only two change the renderer's
output: Visible and Printable. An item is painted only if the layer its
ItemLayer names is both visible and printable — either one turned off drops
the item, and both default to on. Locked is read but never affects what is
drawn, and nested layer folders are flattened to a single peer list. This page
explains exactly when content is suppressed, and is equally clear about the layer
attributes that look like they should matter but do not.
Of everything a layer records, only two switches change what comes out of the
renderer: Visible and Printable. They are the reason layers are worth
documenting before the rest of the layer model — get these two wrong in a fixture
and content silently vanishes. This page explains exactly when that happens, and
is equally clear about the layer attributes that look like they should matter but
do not.
One test, two switches
When the renderer walks a spread, every page item is checked against the layer its
ItemLayer names. The rule is a single AND: an item is drawn only if its layer is
both visible and printable. Either switch turned off is enough to drop the
item.
Visible="false"— the layer is hidden. None of its items are drawn.Printable="false"— the layer is marked non-printing. The current renderer treats this the same as hidden: its items are suppressed from output.
Both default to on. A layer that omits Visible is visible; a layer that omits
Printable prints. And an item whose ItemLayer is missing, or which names a
layer that is not defined, is also drawn — the renderer only suppresses an item
when it can resolve ItemLayer to a real layer that is explicitly off. A missing
or dangling reference never makes content disappear by accident.
Because the two switches collapse into one decision, the renderer precomputes a
single visible && printable answer per layer before it starts painting, then
consults that one flag for each item. There is no separate "printing pass" today —
on-screen and to-output are the same suppression.
The blue rectangle sits on a layer with Visible="false". It parses, but it
never paints. Set that layer's Visible to true to see it return.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?aid style="50" type="document" readerVersion="6.0" featureSet="257" product="20.0(32)"?>
<Document xmlns:idPkg="http://ns.adobe.com/AdobeInDesign/idml/1.0/packaging" DOMVersion="20.0" Self="d" StoryList="ustory" Name="layer-visibility.indd" CMYKProfile="Coated FOGRA39 (ISO 12647-2:2004)" RGBProfile="sRGB IEC61966-2.1" SolidColorIntent="UseColorSettings" AfterBlendingIntent="UseColorSettings" DefaultImageIntent="UseColorSettings">
<Layer Self="ulayer-front" Name="Front" Visible="true" Locked="false" Printable="true"/>
<Layer Self="ulayer-back" Name="Back" Visible="false" Locked="false" Printable="true"/>
<idPkg:Graphic src="Resources/Graphic.xml"/>
<idPkg:Fonts src="Resources/Fonts.xml"/>
<idPkg:Styles src="Resources/Styles.xml"/>
<idPkg:Preferences src="Resources/Preferences.xml"/>
<idPkg:Tags src="XML/Tags.xml"/>
<idPkg:MasterSpread src="MasterSpreads/MasterSpread_umaster.xml"/>
<idPkg:Spread src="Spreads/Spread_uspread.xml"/>
<idPkg:Story src="Stories/Story_ustory.xml"/>
<idPkg:BackingStory src="XML/BackingStory.xml"/>
</Document>
The example makes the parse-versus-render distinction concrete. Inspecting the package, the spread reports two rectangles — both are well-formed and the parser builds both. But the rendered page reports a single frame and a single paint command: the rectangle on the hidden layer is gone by the time the page is drawn. "It is in the XML" and "it is on the page" are two different statements, and the layer's switches are what separate them.
Locked is read, but the renderer ignores it
A layer can also be marked Locked. In an editor, locking a layer stops you from
selecting or moving the items on it — it is a guard against accidental edits. The
parser reads Locked and keeps it on the layer model, but it has no bearing on
output: a locked layer renders exactly like an unlocked one. Locking is an
authoring-time concern that belongs to a canvas and its selection logic, not to a
renderer that only draws.
So if you are reading an IDML to understand what a page looks like, you can
ignore Locked entirely. It matters only to tools that let a user push the
pixels around.
Layer folders are flattened
InDesign's Layers panel can nest layers inside layer groups (folders) for
tidiness. That nesting is purely organizational, and the model here does not carry
it: layers are kept as a single flat, ordered list, with no parent/child
relationship between them. Every <Layer> is a peer. In practice this costs
nothing for rendering — a folder never affected whether its layers' items draw,
only how they were grouped in the panel — but it does mean you cannot ask this
model "which folder is this layer in." There is no folder to ask about.
What to check when content goes missing
The practical payoff of this page is a short checklist. When a frame you can see in the spread XML does not appear on the rendered page, and the geometry looks fine, walk the layer link:
- Read the item's
ItemLayerto find which layer it claims. - Find that
<Layer>indesignmap.xml. - Check its
VisibleandPrintable. If either isfalse, that is your answer.
If the item has no ItemLayer, or it points at a layer that is not in the design
map, layers are not your problem — the renderer would have drawn it on the default
layer, so the disappearance is something else (geometry, color, or threading).
Frequently asked questions
When is a page item's layer allowed to keep it off the page?
An item is drawn only when its layer is both Visible and Printable. Either
switch set to false is enough to suppress the item; both must be on (their
default) for it to paint.
Does Printable="false" behave differently from Visible="false"?
Not in the current renderer. There is no separate printing pass: on-screen and
to-output are the same suppression, so a non-printing layer hides its items exactly
as a non-visible one does. The renderer precomputes a single visible && printable
flag per layer and consults that.
Does a Locked layer affect the rendered output?
No. Locked is read into the layer model but never changes what is drawn — a
locked layer renders exactly like an unlocked one. Locking is an authoring-time
guard against accidental edits, a concern for an editor's selection logic, not for
a renderer.
Are nested layer folders (layer groups) preserved? No. InDesign's layer groups are purely organizational, so the model flattens them to a single ordered list of peer layers with no parent/child relationship. This costs nothing at render time — a folder never affected whether its layers' items drew — but the model cannot tell you which folder a layer was in, because no folder is retained.
The layer model
The Layer element's attributes and the ItemLayer back-reference that assigns a page item to a layer, and how the parser reads each end of that link.
Sections, numbering & variables
How an IDML document labels its pages with sections and bakes computed text into TextVariable instances — and why those two things are entangled at export.