paged.publish — IDML and PDF
The format plugins — IDML import and export that round-trips InDesign packages byte for byte where nothing changed, and PDF opened as an editable native document.
In short paged.publish is how foreign formats enter and leave paged. Its
IDML importer and exporter carry InDesign packages in and out, and an unchanged
package comes back identical to the byte. Its PDF plugin turns a PDF into a native
document: pages, vectors with their colours mapped to swatches, images, and (in
development) text rebuilt into editable paragraphs.
What it does
- IDML import through the engine's native-document door, and IDML export, as typed commands scripts can call.
- A corpus sweep that checks every package in the test corpus survives a round trip unchanged.
- PDF reading with PDFium: vectors and colours become native shapes and swatches, and images decode whatever their filter chain.
- In development: opening a PDF in the editor end to end, and rebuilding its positioned glyphs into paragraphs of styled runs for editing.
How it's built
The idml-import and idml-export crates and the pdf-import crate, plus two TS
bundles (@paged-media/publish, @paged-media/pdf).
Capability state
● shipped & verified · ○ shipped, re-test pending · ◍ shipped, untested · ◐ partial · ✗ failing · · planned
Plugin · publish (IDML/PDF interchange) 6 features · 50% green
| Feature | Shell | Publish |
|---|---|---|
Corpus byte-identity sweep — 99/99 packages identical, and what it does NOT measureplugin-publish.byte-identity-sweep | ◍ | |
IDML interchange adapter (idml-import + idml-export crates, re-homed to plugin-publish)plugin-publish.idml-adapter-crates | ● | |
.idml exporter — the outbound half of the bundle (media.paged.publish.exporter.idml)plugin-publish.idml-exporter | ◍ | ◍ |
.idml importer via host.nativeDocument (@paged-media/publish bundle)plugin-publish.idml-importer | ● | |
Save-path defect class — nine defects between a parsed document and its bytesplugin-publish.save-back-defects | ◍ | |
IDML import and export as typed commandsplugin-publish.typed-commands | ● |
● shipped & verified · ○ shipped, re-test pending · ◍ shipped, untested · ◐ partial · ✗ failing · · planned
Plugin · pdf 7 features · 60% green
| Feature | |
|---|---|
Editable text reconstruction — positioned glyphs → paragraphs of styled runsplugin-pdf.editable-text | ◐ |
Editable vectors + PDF colours mapped to document swatchesplugin-pdf.editable-vector | ● |
Non-JPEG image import — PDFium bitmap decode for every filter chainplugin-pdf.image-filters | ◍ |
crates/pdf-import writes the native `.paged` OCF the engine load path expectsplugin-pdf.native-ocf-writer | ● |
Open/read PDF files in the editor (.pdf importer → native document)plugin-pdf.pdf-import | ◐ |
PDFium is the reader engine (pdf.js dropped)plugin-pdf.pdfium-reader | ◍ |
PDF import as a typed commandplugin-pdf.typed-commands | ● |
Recent activity
- 2026-10-18README: moved to paged-media/paged (modules/publish) [skip ci]a83e844
- 2026-10-18idml-coverage: XML/Tags.xml and the element trees' parts05c5719
- 2026-10-18idml-coverage: justify the XML structure reads InDesign writes and the census lacks72cf5f0
- 2026-10-18Merge pull request #58 from paged-media/d02/xml-importba137d9
- 2026-10-18Pin core a47339c (#137 XML structure model, #138 protocol 74); coverage9bdba98
- 2026-10-18Merge remote-tracking branch 'origin/main' into d02/xml-importe1e90d1
- 2026-10-18Merge pull request #57 from paged-media/d01/tracked-changes-model2f75704
- 2026-10-18Pin core f8f81d3 (#136, tracked deletions in the model); merge mainbdadd29
paged.slide — presentations
The presentation plugin — PowerPoint decks opened as native pages with their masters, charts, tables and notes, reworked with layout tools and exported back to .pptx.
plugin-template — the starter
The fork-and-go plugin starter — the SDK tutorial as a runnable repo that consumes only the published @paged-media packages.