Settings

Theme

Show HN: PDFBolt – HTML to PDF API with Git-like template versioning

pdfbolt.com

1 points by Ametrin 16 days ago · 0 comments · 2 min read

Reader

Hi HN, I'm Michał. I posted PDFBolt here about a year ago as a basic HTML to PDF API. Since then I've been rebuilding it around the thing that kept bugging me: every time a designer tweaked a layout, it meant a code change, a deploy, and a prayer that nothing broke in production. I wanted templates that live on the server and version themselves, so my API calls stay the same when the layout changes.

Try the editor, no sign-up. Open a sample report, change the data, and download a real PDF: https://pdfbolt.com/try

Templates use Handlebars. Your API call sends a templateId + JSON data. You update the template in the dashboard, your code never changes. Every edit auto-creates a draft, and you publish when ready. You can browse history and compare any two versions as rendered PDFs side by side. The comparison shows rendered PDFs, not just code. A one-line margin tweak can push a table onto the next page, and you won't catch that in code. You can roll back with one click if something breaks.

Right now template management lives in the dashboard. I'm working on an API so coding agents can create and version templates programmatically.

The part I went deepest on recently was compression. The compressor samples every 10th pixel to classify each image as bitonal, grayscale, or color, then picks an encoding per image. Bitonal gets CCITT Group 4 with Otsu's method for the threshold. Color and grayscale get JPEG. Images with alpha channels get split into RGB (JPEG, lossy) and mask (FlateDecode, lossless) via an SMask so edges stay sharp. Before any of that, MD5 hashes of raw streams deduplicate identical images across pages, and everything gets downscaled to target DPI.

Four tiers: lossless, low, medium, high. A 23 MB product catalog with photos dropped to 1.6 MB on high.

Built on Apache PDFBox. I looked at Ghostscript but it's AGPL, which doesn't work for a hosted SaaS.

I also support PDF/X-1a and PDF/X-4 for print with RGB to CMYK conversion and ICC profiles. Happy to talk about the color pipeline in comments.

Stack: headless Chromium via Playwright, Kotlin/Spring Boot, EU-hosted. I don't store template data after rendering.

Two-person team, bootstrapped.

Revenue: https://trustmrr.com/startup/pdfbolt

Free: 100 PDFs/month, no card

Docs: https://pdfbolt.com/docs

Ask me anything about compression internals, template versioning, color pipeline, or whatever.

No comments yet.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection