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.
| Capability | Main API | Stability | Guide |
|---|
| Open a document session | GraphCompose.document(...) → DocumentSession | Stable | Your first document |
| Describe content in reading order | pageFlow(...), module(...), addSection(...) | Stable | Getting started |
| Maintained document templates | ModernInvoice, ModernProposal, the templates.cv.* / templates.coverletter.* preset galleries | Stable | Templates |
| Reusable building blocks (helpers) | helper methods / widgets over the DSL | Stable | Diagrams |
| Custom node / backend | NodeDefinition, render-handler SPI, FixedLayoutBackend | Extension SPI (@Beta) | Extending |
| Capability | Main API | Stability | Guide |
|---|
| Paragraphs & rich inline text | addParagraph(...), addRich(...), RichText | Stable | Recipes — rich text |
| Lists (flat & nested) | addList(...), ListBuilder | Stable | Recipes |
| Tables (spans, zebra, totals, repeat header) | addTable(...), DocumentTableCell | Stable | Advanced tables |
| Raster images | addImage(...), fit modes | Stable | Shapes & images |
| Vector shapes, dividers, lines | addShape(...), addLine(...), addEllipse(...) | Stable | Shapes |
| Charts (bar / line / pie) | chart(ChartSpec...), ChartData | Stable | Charts |
| Barcodes & QR | addBarcode(...) | Stable | Recipes |
| Capability | Main API | Stability | Guide |
|---|
| Write a PDF file | buildPdf(), buildPdf(Path) | Stable | Getting started |
| Stream to a caller-owned stream | writePdf(OutputStream) | Stable | Streaming |
| In-memory bytes | toPdfBytes() | Stable | Getting started |
| Geometry-identical PowerPoint deck | buildPptx(), buildPptx(Path), writePptx(OutputStream), toPptxBytes() — needs graph-compose-render-pptx on the classpath | Experimental (@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(...) | Stable | Getting started |
| Layout snapshot regression | LayoutSnapshotAssertions.assertMatches(...) | Stable | Layout snapshot testing |
| Visual (pixel) regression | PdfVisualRegression | Stable | Layout snapshot testing |
| Render-only debug overlays | guideLines(...), debug(...) | Stable | Getting started |
| Capability | Main API | Stability | Guide |
|---|
| External links | addLink(...), inlineLink(...) | Stable | Getting started |
| Internal jumps | anchor("x") + linkTo("x") | Stable | Getting started |
| PDF outline bookmarks | bookmark(new DocumentBookmarkOptions(...)) | Stable | Getting started |
These ship from 2.1.0 onward — confirm your dependency version before relying on them:
| Capability | Main API |
|---|
Editable PowerPoint deck (@Beta) | buildPptx(Path), writePptx(OutputStream), toPptxBytes() — add graph-compose-render-pptx |
| Slide page-size presets | DocumentPageSize.SLIDE_16_9, DocumentPageSize.SLIDE_4_3 |
| Select a render backend by format | BackendProviders.fixedLayout("pptx") |
| Keep a heading with its content | SectionBuilder.keepWithNext(), LineBuilder.keepWithNext() |
These ship from 1.9.0 onward:
| Capability | Main API |
|---|
| Printed page references | addPageReference("anchor") |
| Generated Table of Contents | addTableOfContents(toc -> toc.entry(...)) |
| Page preview images | toImage(pageIndex, dpi), toImages(dpi) |