All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Bundled folio engine bumped v0.7.1 → v0.9.1, bringing the cumulative
0.8.0 / 0.9.0 / 0.9.1 engine work into the SDK: deterministic/reproducible
output,
context-aware render paths, untrusted-input resource guards, a typed error taxonomy, sfnt-free font metrics with TrueType Collection loading, GPOS / CJK / Unicode-normalization shaping fixes, and the 0.9.1 rendering-correctness pass —border-radius,@page/position: fixed/ margin boxes, list pagination and multi-level CSS-counter numbering, tablerowspan, and a from-scratch fix of the QR encoder. See the folio v0.8.0–v0.9.1 release notes for the full list Document.Builder.language(String)— sets the PDF catalog/Lang(BCP-47) and drives TrueType-collection face selection for embedded CJK fontsFont.parseForLanguage(byte[], String)— parses a font/TTC selecting the face that matches a BCP-47 tag (Simplified Chinese, Traditional Chinese, Japanese, Korean), falling back to face 0 for an empty or unrecognised tagParagraph.measureLines(double)andParagraph.measureHeight(double)— measure the wrapped line count and height at a given width without renderingParagraph.splitAfterLine(int, double)returningParagraph.Split(head, tail)— splits a paragraph after the n-th line to fit content to a region and flow the remainder onto the next page or column- Native-library CI (
build-natives.yml) now builds the engine with Go 1.25, required by folio v0.9.1
0.2.0 - 2026-04-23
- Bundled folio engine bumped to v0.7.1 (16 new C ABI exports)
WriteOptionsbuilder +Document.saveWithOptions()/Document.toBytesWithOptions()for the writer optimizer (xref streams, object streams, orphan sweep, content-stream cleanup, object deduplication, stream recompression). Both writer entry points acceptnullfor "use defaults"Directionenum (AUTO,LTR,RTL) withsetDirection(...)onParagraph,ListElement, andTableDocument.setActualText(boolean)to opt out of/ActualTextemission in tagged PDFsColumns.setBalanced(boolean)toggle for balanced vs sequential multi-column fill- New examples:
Optimize(writer-optimizer comparison),Rtl(Hebrew bidi, Arabic shaping, kashida, ActualText),Indic(Devanagari shaping pipeline),Cjk(Chinese/Japanese/Korean text + kinsoku shori)
0.1.0 - 2026-04-09
First stable release of the Folio Java SDK, bundling the folio Go engine v0.6.2.
- 372 Panama FFI bindings to the folio Go engine (
dev.foliopdf.internal.FolioNative) - 59 public API classes with fluent builders (
dev.foliopdf.*) - Zero runtime dependencies -- requires JDK 22+ only
- 5-platform native library bundled in the JAR: linux-x86_64, linux-aarch64, macos-x86_64, macos-aarch64, windows-x86_64
- Document generation: paragraphs, headings, tables, divs, lists, images, links, line separators, area breaks
- Advanced layout: Flexbox (
Flex), CSS Grid (Grid), multi-column (Columns), float (FloatElement), tabbed lines (TabbedLine) - Barcodes: QR, Code128, EAN-13 (
Barcode) - SVG parsing and rendering (
SvgElement) - HTML-to-PDF conversion as a one-liner (
HtmlConverter.toPdf()) - PDF reading: text extraction, metadata, page dimensions, structure tree (
PdfReader) - PDF merge with page manipulation -- rotate, reorder, crop, remove (
PdfMerger) - Page import for template workflows (
PageImport) - Digital signatures: PAdES B-B through B-LTA with PEM and PKCS#12 support (
PdfSigner,PadesLevel,TsaClient,OcspClient) - Form creation, filling, and flattening (
Form,FormField,FormFiller) - PDF redaction -- text, regex, and region-based (
PdfRedactor,RedactRegion,RedactOpts) - Encryption with granular permissions using AES-256, AES-128, or RC4 (
EncryptionAlgorithm,PdfPermission) - PDF/A compliance at levels 1-3 (B/U/A) with validation (
PdfALevel) - Tagged PDF / PDF/UA support: alt text, custom structure tags, structure tree reading
- Drawing primitives on pages: lines, rectangles (
Page) - Text highlighting via TextRun background color
- CSS length parsing utility (
CssLength) - Headers and footers with page number placeholders (
PageDecorator) OutputStream,InputStream, andPathAPI support onDocument,PdfReader,HtmlConverter, andFont- 12 runnable examples: Hello, Report, Invoice, HtmlToPdf, Merge, Forms, Fonts, Links, ZugferdInvoice, Redact, ImportPage, Sign