Skip to content

Releases: RikoAppDev/compose-pdf

v0.7.0

27 Jun 18:26

Choose a tag to compare

Color emoji support.

render(regular, bold, emoji) draws emoji as inline color bitmaps pulled from an Apple sbix or Google CBLC/CBDT color-emoji font and embedded as image XObjects — the "phone" emoji look, with selectable text around them.

  • Single–code-point emoji. ZWJ sequences and skin-tone modifiers render their base emoji (joiner/modifier dropped); color vector fonts (COLR/CPAL, e.g. Segoe UI Emoji) are not used.
  • Opt-in: omitting the emoji font keeps output byte-for-byte identical, and the cross-platform golden test still passes.
  • The on-screen @Preview bridge renders emoji as text (.notdef); color emoji live in the exported PDF only.

Includes everything from 0.6.0 (the published compose-pdf-preview artifact).

v0.6.0

27 Jun 18:25

Choose a tag to compare

Publish the design-time @Preview bridge as its own Maven Central artifact.

  • io.github.rikoappdev:compose-pdf-preview:0.6.0 — render a pdfDocument { … } spec live on a Compose Canvas (Android Studio / Compose Desktop @Preview), reusing the engine's computed layout.
  • CI now also runs :composepdf-preview:jvmTest (headless Compose Desktop screenshot).

v0.5.0

23 Jun 02:52

Choose a tag to compare

Universal vector image import — SVG + Android VectorDrawable → native PDF vector paths.

New DSL: vector(bytes, width, height, fit) (auto-detects SVG vs VectorDrawable).

  • Full SVG/VD path grammar (M L H V C S Q T A Z, abs+rel); quadratics & elliptical arcs → cubic beziers
  • Basic shapes (rect/circle/ellipse/line/polyline/polygon), <group>/transform, inherited paint
  • nonzero & even-odd fill, stroke, per-element opacity; currentColor + full CSS named-color set
  • Colors: #AARRGGBB (VectorDrawable) and #RRGGBB[AA]/rgb()/named (SVG)
  • Emitted as a reusable Form XObject (a logo repeated in a header costs one object)
  • Pure-Kotlin, dependency-free (no XML library); deterministic output
  • Hardened against malformed input (no parser hangs); verified via PDFBox rasterization

Deferred: gradients, patterns, , clipPath, filters, CSS classes.

v0.4.1

23 Jun 01:43

Choose a tag to compare

Hardening release — decoder robustness against malformed/edge input. Valid-data output is byte-identical to 0.4.0 (golden unchanged).

  • inflate: range-check distance symbol, validate stored-block NLEN, overflow-safe buffer sizing
  • png: require in-range palette index, reject overflow-sized dimensions
  • jpeg: accept only baseline/progressive SOF (reject lossless/arithmetic), bounds-check SOF read
  • font: guard numberOfHMetrics == 0
  • dsl: require photoGrid perRow >= 1; clamp oversized image height to the page

v0.4.0

22 Jun 22:47

Choose a tag to compare

PNG image support: image() accepts PNG (pure-Kotlin decode → /FlateDecode + /SMask transparency) alongside JPEG. JPEG path unchanged.

v0.3.1

21 Jun 23:29

Choose a tag to compare

Publish via the Central Portal Publisher API (reliable CDN sync). Same library as 0.3.0 (render progress callback).

v0.3.0

21 Jun 19:24

Choose a tag to compare

compose-pdf 0.3.0

  • Render progress callbackrender(regular, bold, onProgress) reports 0f1f as pages are laid out and serialized, for a real determinate progress bar. The callback is optional and defaults to null; output is byte-for-byte unchanged when omitted.
  • Roadmap: live @Composable preview bridge.

v0.2.0

21 Jun 10:26

Choose a tag to compare

compose-pdf 0.2.0

  • Rounded box corners; per-fragment border/background when boxes split across pages.
  • Per-row table background + split horizontal/vertical cell padding; totalRow background override.
  • PhotoFit.Smart / Contain / Cover — aspect-ratio aware image layout.
  • Reserved footer / page-number space; configurable repeatHeader (every page vs first only), pageNumbers, pageNumberFormat, pageNumberStyle.
  • keepBlocksTogether to avoid orphaned slivers.
  • Example-document gallery in commonMain (ExampleDocuments) with rendered samples under samples/.

0.1.0

20 Jun 16:41

Choose a tag to compare

First release of compose-pdf — a pure-Kotlin Kotlin Multiplatform vector PDF library.

  • Embedded subset Type0/CIDFontType2 (Identity-H) + ToUnicode: selectable, searchable text incl. Latin diacritics.
  • Compose-style DSL: text, spacer, divider, row/column/box, image/photoGrid, table with repeating headers and total rows, header/footer bands + page numbers.
  • Automatic pagination; FlateDecode compression (pure-Kotlin deterministic deflate).
  • App-supplied fonts; identical integer layout proven across JVM + iOS by a cross-platform golden test.
  • Targets: Android + iOS + JVM.