Capabilities

July 25, 2026 · View on GitHub

A one-glance map of what GraphCompose can do, the main API for each, and its stability tier. "Stability" rows use the tiers defined in the API stability policy; "Guide" links to the page that shows it in context.

This is a feature catalogue, not the contract — the API stability policy is authoritative for what each tier promises, and canonical ⇄ legacy parity tracks what is Partial or Planned.


Authoring

CapabilityMain APIStabilityGuide
Open a document sessionGraphCompose.document(...)DocumentSessionStableYour first document
Describe content in reading orderpageFlow(...), module(...), addSection(...)StableGetting started
Maintained document templatesModernInvoice, ModernProposal, the templates.cv.* / templates.coverletter.* preset galleriesStableTemplates
Reusable building blocks (helpers)helper methods / widgets over the DSLStableDiagrams
Custom node / backendNodeDefinition, render-handler SPI, FixedLayoutBackendExtension SPI (@Beta)Extending

Content

CapabilityMain APIStabilityGuide
Paragraphs & rich inline textaddParagraph(...), addRich(...), RichTextStableRecipes — rich text
Lists (flat & nested)addList(...), ListBuilderStableRecipes
Tables (spans, zebra, totals, repeat header)addTable(...), DocumentTableCellStableAdvanced tables
Raster imagesaddImage(...), fit modesStableShapes & images
Vector shapes, dividers, linesaddShape(...), addLine(...), addEllipse(...)StableShapes
Charts (bar / line / pie)chart(ChartSpec...), ChartDataStableCharts
Barcodes & QRaddBarcode(...)StableRecipes

Layout

CapabilityMain APIStabilityGuide
Columns that still flowaddRow(row -> row.weights(...))StableLayered page design
Page-wide fills / bandspageBackground(...), pageBackgrounds(...)StablePage backgrounds
Overlap & alignmentaddLayerStack(...)StableLayered page design
Shape-as-containeraddContainer(...), addCircle(...), addEllipse(...)StableShape as container
Fixed (x, y) placementaddCanvas(w, h, canvas -> canvas.position(...))StableAbsolute placement
Bleed to page edgebleedToEdge(...)StablePage backgrounds
Transforms (rotate / scale)DocumentTransformStableTransforms

Output & testing

CapabilityMain APIStabilityGuide
Write a PDF filebuildPdf(), buildPdf(Path)StableGetting started
Stream to a caller-owned streamwritePdf(OutputStream)StableStreaming
In-memory bytestoPdfBytes()StableGetting started
Geometry-identical PowerPoint deckbuildPptx(), buildPptx(Path), writePptx(OutputStream), toPptxBytes() — needs graph-compose-render-pptx on the classpathExperimental (@Beta, first shipped in 2.1.0)Backend capability matrix
Editable Word (semantic)export(new DocxSemanticBackend())Stable (semantic, not PDF parity)Troubleshooting
PDF chrome (metadata / watermark / header / footer / protection)metadata(...), watermark(...), header(...), footer(...), protect(...)StableGetting started
Layout snapshot regressionLayoutSnapshotAssertions.assertMatches(...)StableLayout snapshot testing
Visual (pixel) regressionPdfVisualRegressionStableLayout snapshot testing
Render-only debug overlaysguideLines(...), debug(...)StableGetting started
CapabilityMain APIStabilityGuide
External linksaddLink(...), inlineLink(...)StableGetting started
Internal jumpsanchor("x") + linkTo("x")StableGetting started
PDF outline bookmarksbookmark(new DocumentBookmarkOptions(...))StableGetting started

New in 2.1.0

These ship from 2.1.0 onward — confirm your dependency version before relying on them:

CapabilityMain API
Editable PowerPoint deck (@Beta)buildPptx(Path), writePptx(OutputStream), toPptxBytes() — add graph-compose-render-pptx
Slide page-size presetsDocumentPageSize.SLIDE_16_9, DocumentPageSize.SLIDE_4_3
Select a render backend by formatBackendProviders.fixedLayout("pptx")
Keep a heading with its contentSectionBuilder.keepWithNext(), LineBuilder.keepWithNext()

New in 1.9.0

These ship from 1.9.0 onward:

CapabilityMain API
Printed page referencesaddPageReference("anchor")
Generated Table of ContentsaddTableOfContents(toc -> toc.entry(...))
Page preview imagestoImage(pageIndex, dpi), toImages(dpi)

See also