XSL-FO 1.1 to PDF (and SVG/text) pipeline in pure Rust. 10–1200x faster than Java FOP, zero JVM, full Knuth-Plass line breaking, 294 properties supported. Production-grade document generation is now memory-safe and sovereign.
A foundational piece for the COOLJAPAN ecosystem landed on February 25.
Today we released FOP 0.1.0 — a complete, high-performance reimplementation of Apache FOP (Formatting Objects Processor) written entirely in Rust.
No JVM. No C++. No external binaries.
Just clean, memory-safe, blazing-fast XSL-FO processing that compiles to a single static binary.
For 20+ years, enterprise document generation meant running Apache FOP (Java) or commercial alternatives (RenderX, Antenna House).
These tools are powerful but suffer from:
FOP 0.1.0 ends all of that.
It delivers 10–1200× faster performance while using 1/10th the memory — all in pure Rust with zero unsafe code in the hot path.
The architecture mirrors the original FOP pipeline but is radically simplified and optimized in Rust:
FO Tree (parsing)
quick-xml + zero-copy Cow<'static, str> parsing. 294 XSL-FO 1.1 properties with full inheritance and cascading.
Area Tree (layout engine)
Renderer (PDF output)
Pure-Rust PDF writer with font embedding, hyperlinks, bookmarks, text extraction, and compression.
Also supports SVG and plain-text output.
Key Rust advantages:
Rc<RefCell<>> overhead)<10 MB binary size (vs 15 MB+ Java JAR)fop2 on PyPI) and WASM bindings (@cooljapan/fop on npm)FOP is now the official document generation layer for the COOLJAPAN stack:
Repository: https://github.com/cool-japan/fop
Star the repo if you’re tired of JVM-based document generation.
The era of “just run the Java JAR” is over.
Pure Rust document processing is here — and it’s ridiculously fast.
— KitaSan at COOLJAPAN OÜ
February 25, 2026