How chrisjenx/compose2pdf works
Compose 2 PDF is a Kotlin/JVM library that turns Compose Desktop content into PDF bytes or writes it to a caller-provided stream. The main workflow enters through renderToPdf, which delegates rendering and pagination before producing either SVG-backed vector pages or raster pages. The README documents vector/raster modes, page presets, automatic and manual pagination, headers/footers, font embedding, and link annotations. The graph includes these capabilities and the SVG conversion helpers; unsampled implementation details are represented only where README or index references support the relationship.
Main entry points: PdfRenderer.kt Render Orchestrator · SvgToPdfConverter.kt SVG to PDF · Compose2Pdf.kt PDF Entry Point · PaginatedColumn.kt Paginated Column API
Components 24
Public API
- PDF Entry Point
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/Compose2Pdf.kt - Page Configuration
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/PdfPageConfig.kt - Page Margins
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/PdfMargins.kt - Render Options
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/RenderMode.kt - Pagination Options
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/PdfPagination.kt - Page Metadata
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/PdfPageInfo.kt - Paginated Column API
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/PaginatedColumn.kt - Local Page Config
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/LocalPdfPageConfig.kt
Page Layout
- Page Layout Engine
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/PageLayout.kt - Automatic Pagination
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/PaginatedColumn.kt
Rendering
- Render Orchestrator
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/PdfRenderer.kt - Compose Scene
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/ComposeSceneRenderer.kt - SVG Capture
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/ComposeToSvg.kt
PDF Conversion
- SVG to PDF
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/SvgToPdfConverter.kt - Coordinate Mapping
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/CoordinateTransform.kt - SVG Path Parser
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/SvgPathParser.kt - SVG Color Parser
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/SvgColor.kt - SVG Shape Renderer
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/SvgShapeRenderer.kt - Font Resolution
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/FontResolver.kt - Typeface Embedding
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/SkiaTypefaceEmbedder.kt - Text Normalization
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/TextNormalizer.kt
Other components
- Library Caller
- PDF Document
- Output Stream
Connections 27
- Library Caller → PDF Entry Point: calls
README.md - PDF Entry Point → Render Orchestrator: delegates
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/Compose2Pdf.kt - PDF Entry Point → Page Configuration: configures
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/Compose2Pdf.kt - PDF Entry Point → Render Options: selects mode
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/Compose2Pdf.kt - PDF Entry Point → Pagination Options: selects pagination
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/Compose2Pdf.kt - Page Configuration → Page Margins: uses
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/PdfPageConfig.kt - Paginated Column API → Automatic Pagination: uses
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/PaginatedColumn.kt - Paginated Column API → Local Page Config: reads
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/PaginatedColumn.kt - Render Orchestrator → Compose Scene: renders Compose
- Render Orchestrator → SVG Capture: captures SVG
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/PdfRenderer.kt - Render Orchestrator → Page Layout Engine: builds layout
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/PdfRenderer.kt - Render Orchestrator → Automatic Pagination: paginates content
- Render Orchestrator → SVG to PDF: converts vector pages
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/PdfRenderer.kt - Render Orchestrator → PDF Document: creates raster pages
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/PdfRenderer.kt - Render Orchestrator → Page Metadata: provides page data
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/PdfRenderer.kt - Render Orchestrator → Local Page Config: provides effective config
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/PdfRenderer.kt - SVG to PDF → Page Layout Engine: uses layout
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/SvgToPdfConverter.kt - SVG to PDF → Coordinate Mapping: maps coordinates
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/PdfRenderer.kt - SVG to PDF → SVG Path Parser: parses paths
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/SvgToPdfConverter.kt - SVG to PDF → SVG Color Parser: parses colors
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/SvgToPdfConverter.kt - SVG to PDF → SVG Shape Renderer: draws shapes
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/SvgToPdfConverter.kt - SVG to PDF → Font Resolution: resolves fonts
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/SvgToPdfConverter.kt - SVG to PDF → Text Normalization: normalizes text
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/SvgToPdfConverter.kt - Font Resolution → Typeface Embedding: embeds typefaces
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/FontResolver.kt - SVG to PDF → PDF Document: writes PDF pages
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/internal/SvgToPdfConverter.kt - PDF Entry Point → Output Stream: writes PDF
compose2pdf/src/main/kotlin/com/chrisjenx/compose2pdf/Compose2Pdf.kt - Render Orchestrator → PDF Document: returns document