Blog
Articles about PDF generation, JSX rendering, and building with Forme.
OpenType shaping, BiDi text, and CSS Grid
Forme now shapes text with real OpenType tables, renders Arabic and Hebrew correctly, and supports 2D grid layouts. Here's what changed and why it matters.
How we implemented TeX's line-breaking algorithm in a PDF engine
Greedy line breaking produces ugly justified text. Knuth and Plass solved this in 1981. Here's how we brought their algorithm into a modern Rust PDF engine.
Build a PDF API in 5 minutes
A complete PDF generation API with Hono. Authentication, multiple templates, custom documents. Deploy to Cloudflare Workers or any Node.js host.
PDF generation at the edge: why WASM beats headless Chrome
Headless Chrome is a browser automation tool pretending to be a PDF engine. Here's what happens when you use an actual layout engine instead.
AI agents can generate PDFs now
A Model Context Protocol server that lets Claude, Cursor, and other AI tools render real PDFs from natural language. No code, no docs, no setup.
Generate PDFs on Cloudflare Workers
PDF generation at the edge. No headless Chrome, no servers, no cold starts. Just WASM running in 200+ data centers.
Generate PDFs in Next.js App Router with one line
Add a PDF endpoint to your Next.js app in 30 seconds. Route handlers, server actions, and custom templates.
Send invoice emails with one function call
Render a PDF and email it as an attachment in a single line. No manual byte handling, no attachment wiring.
I replaced a Puppeteer service with 39 lines of code
How I deleted a headless Chrome PDF server and moved to an in-process Rust engine. 1018 lines removed, render time from seconds to 28ms.
Forme: PDF generation with JSX
An open source Rust PDF engine with a React component layer. Page breaks that actually work. 28ms renders. No headless browser.