iText is AGPL, use it in a closed-source app and you need a commercial license. I wanted a Java PDF library with a clean API and no licensing strings attached, so that's what Folio is.
The engine is written in Go and ships bundled in the JAR via Panama FFI (JEP 454). No JNI, no separate process. JDK 22+, one flag: --enable-native-access=ALL-UNNAMED.
Document.create("report.pdf", doc -> {
doc.add(Heading.of("Q3 Report", HeadingLevel.H1));
doc.add(Paragraph.of("Revenue grew 23% year over year."));
doc.add(Table.of(
new String[]{"Product", "Revenue"},
new String[]{"Widget A", "$48,000"}
));
});
HTML to PDF is a one-liner: HtmlConverter.toPdf("<h1>Invoice</h1><p>Due: $1,200</p>", "invoice.pdf");
Beyond that it covers PAdES signatures, PDF redaction, Flexbox and Grid layout, forms, barcodes, SVG, PDF/A, and encryption. Zero runtime dependencies.https://github.com/carlos7ags/folio-java
Go engine: https://github.com/carlos7ags/folio
Playground (runs the Go engine directly): https://playground.foliopdf.dev