Files
designcraft/docs/pdf-layer-visibility.md
T
skylar taylor-barrick fc59be5b2a Docs: say which placements the package report names
The report asks for a placement the export walk reaches whose asset is still a PDF, so it cannot
name a choice anchored inside a table cell or a note. The paragraph now says that rather than
leaving the scope to the sentence above.
2026-10-24 17:49:38 -06:00

3.0 KiB

Placed PDF layer visibility

Object Layer Options distinguishes a PDF's own default configuration from an explicit visibility choice, including showing every layer. Use File Defaults resets that choice. Only placed PDFs in a mixed selection are changed.

The engine command object.layerOptions accepts hidden names and optional useDefaults. Existing calls with hidden: [] retain their reset behavior; pass useDefaults: false to explicitly show all layers. useDefaults: true resets defaults and cannot be combined with hidden names. Every explicit choice, including all-on (useDefaults: false with an empty hidden list), is checked with one actual visibility rewrite per distinct source before any target is edited or an undo step is recorded: a PDF can list readable layers yet refuse the rewrite (for example an over-budget cross-reference history), and PDFs without readable optional-content layers cannot be rewritten at all. Resetting to file defaults needs no rewrite and is always allowed. A stored choice whose source can no longer be rewritten still fails closed: the canvas does not draw the unmodified source and PDF export reports an error. With no explicit ID, a query selects the first placed PDF anywhere in the selection; an explicit non-PDF ID remains an error. Queries include overridden separately from each layer's visible and default states.

Native saves use format 4 only for an explicit all-on override, on document or parent spreads, in groups or anchored: older readers would otherwise silently render file defaults. Format 4 is one reader capability shared with retained placed-graphic layer options (#1647, see graphic-layer-options.md), so a version 4 reader understands both. Existing nonempty hidden lists retain their older semantics and format requirements. Raster and PDF export honor the choice; PDF export keeps its existing warned rasterization behavior. Embedded IDML export stores a separate PDF variant per placement and leaves original linked bytes untouched. The export walks cover the placements a page shows through its spreads and through its stories: parent-page and anchored ones too, so a page that inherits the placement does not quietly fall back to the file's defaults. They do not follow the stories nested in table cells or in footnotes and endnotes yet, so a placement anchored there keeps its choice on the document while the IDML copy is left at the file's defaults and the PDF/A-2b rasterisation pass does not flatten it; widening that traversal is separate work (gap 19). External-only IDML export rejects active PDF layer choices because the original external file would lose the choice. A package's IDML copy links the placed files, so it cannot carry a choice either; the package report says so for a placement the export walk reaches, and the packaged DesignCraft document keeps it.

This fixes visibility-state handling, not full InDesign layer/print parity. It does not implement editing the contents of placed PDFs or native INDD placement. Catalog/reference safety fixes landed in #1670.