After a year since v1, I’m open-sourcing htmldocs, a React-based library for building PDF documents using modern web development tools. Write document templates in JSX, style with Tailwind, and render them to pixel-perfect PDFs with a Chromium pipeline—no more LaTeX headaches or Word/Google Docs limitations.
I originally built this because I needed a better way to generate invoices and tailor resumes to job descriptions dynamically. Existing solutions had major trade-offs:
- Google Docs/Word → Easy but lack APIs & version control
- LaTeX → Structured output but painful syntax & no API
- Figma → Flexible but not designed for automation
With htmldocs, you can:
- Define document templates and props in JSX (just like web components)
- Use modern CSS (flexbox, grid, Tailwind, etc.)
- Render server-side via a headless Chromium pipeline
- Upload templates for remote PDF generation via an API
Most of the world still runs on PDFs—contracts, reports, invoices, resumes, etc. It’s time we had a developer-first approach to document generation, just like we build for the web.
What frustrations have you had with existing document solutions? Would love to hear your ideas, experiences, and feedback.
I originally built this because I needed a better way to generate invoices and tailor resumes to job descriptions dynamically. Existing solutions had major trade-offs:
- Google Docs/Word → Easy but lack APIs & version control
- LaTeX → Structured output but painful syntax & no API
- Figma → Flexible but not designed for automation
With htmldocs, you can:
- Define document templates and props in JSX (just like web components)
- Use modern CSS (flexbox, grid, Tailwind, etc.)
- Render server-side via a headless Chromium pipeline
- Upload templates for remote PDF generation via an API
Most of the world still runs on PDFs—contracts, reports, invoices, resumes, etc. It’s time we had a developer-first approach to document generation, just like we build for the web.
What frustrations have you had with existing document solutions? Would love to hear your ideas, experiences, and feedback.