3.4 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. PDF/A-2b preparation also follows stories nested in table cells, footnotes and endnotes, applying both hidden-layer and explicit all-on choices to an export-only raster copy. Embedded IDML applies those choices to anchors in table-cell and footnote text too, with independent variants for placements sharing source bytes. If placements share an item id, they must agree on source asset and layer choice or the export fails rather than embedding the wrong variant. Identical duplicated anchors can still export; the shared-id gap in frame duplication remains separate. Variants inside endnote stories are prepared, but IDML does not serialize endnote structures or their artwork; that remains unsupported (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.