# Transactional > PDF infrastructure for builders. Design HTML/Tailwind/Handlebars templates in an online editor and generate transactional PDFs through a simple API. ## Product - [Home](https://transactional.dev/): product overview - [Pricing](https://transactional.dev/pricing): plans and credit-based pricing - [Documentation](https://transactional.dev/docs/guides): guides and API reference ## Blog - [How to Generate a PDF Quote or Estimate for Your SaaS](https://transactional.dev/blog/how-to-generate-a-pdf-quote-or-estimate-for-your-saas): How to build a PDF quote generator — template once in HTML/Tailwind, pass line items and client data, get a branded PDF quote ready to send by email. - [How to Build a PDF Report Generator from Database Data](https://transactional.dev/blog/how-to-build-a-pdf-report-generator-from-database-data): How to fetch data from your database, map it to a PDF report template, and generate a downloadable PDF on demand — with a practical Node.js example. - [How to Generate PDFs with Custom Fonts](https://transactional.dev/blog/how-to-generate-pdfs-with-custom-fonts): Font rendering in PDFs is notoriously painful. Here is how to use any Google Font or custom web font in your generated PDFs without embedding base64 strings or installing system fonts. - [How to Add a Watermark to a PDF](https://transactional.dev/blog/how-to-add-a-watermark-to-a-pdf): How to add text or image watermarks to generated PDFs using CSS overlays in your HTML template — no post-processing library, no extra step. - [How to Generate PDFs from a Next.js App (App Router)](https://transactional.dev/blog/how-to-generate-pdfs-from-a-next-js-app-app-router): Client-side PDF libraries break on SSR. Puppeteer crashes on Vercel Edge. Here is the correct pattern for PDF generation in a Next.js App Router app. - [How to Generate PDFs in a Ruby on Rails App](https://transactional.dev/blog/how-to-generate-pdfs-in-a-ruby-on-rails-app): Wicked PDF and Prawn are getting old. Here is how to generate PDFs in a Rails app with a simple API call — no wkhtmltopdf binary, no layout DSL to learn. - [PDF Generation API Comparison: Transactional.dev vs DocRaptor vs PDFShift vs Gotenberg](https://transactional.dev/blog/pdf-generation-api-comparison-transactional-dev-vs-docraptor-vs-pdfshift-vs-gote): An honest comparison of PDF generation APIs in 2026 — pricing, features, template systems, self-hosted vs managed, and which fits which use case. - [How to Generate PDFs in PHP (Laravel, Symfony)](https://transactional.dev/blog/how-to-generate-pdfs-in-php-laravel-symfony): DomPDF and TCPDF are painful to maintain. Here is how to generate production-quality PDFs in Laravel and Symfony with a single API call — no binary dependencies. - [How to Generate PDFs from a Python App](https://transactional.dev/blog/how-to-generate-pdfs-from-a-python-app): Replace WeasyPrint, ReportLab, and wkhtmltopdf with a single requests.post() call. PDF generation examples for Django, Flask, and FastAPI. - [How to Build a Document Automation Pipeline for SaaS](https://transactional.dev/blog/how-to-build-a-document-automation-pipeline-for-saas): Design a clean document automation pipeline: events, template selection, variable mapping, PDF generation, and delivery. Full architecture walkthrough. - [How to Handle Multi-Page PDFs with Dynamic Content](https://transactional.dev/blog/how-to-handle-multi-page-pdfs-with-dynamic-content): Master CSS page breaks, repeating headers, and Handlebars loops to generate clean multi-page PDFs from dynamic data. - [How to Generate a PDF Certificate of Completion](https://transactional.dev/blog/how-to-generate-a-pdf-certificate-of-completion): Build a dynamic PDF certificate generator with HTML templates and a simple API call. Perfect for courses, events, and training programs. - [How to Version and Audit PDF Documents in Production](https://transactional.dev/blog/how-to-version-and-audit-pdf-documents-in-production): Build an audit trail for every PDF you generate. Store document versions, replay any document, and prove exactly what was sent to whom. - [PDF Generation in a Serverless Environment (Vercel, AWS Lambda)](https://transactional.dev/blog/pdf-generation-in-a-serverless-environment-vercel-aws-lambda): Why Puppeteer and Chromium fail in serverless environments and how to generate PDFs with a simple API call from Vercel and AWS Lambda. - [How to Build a "Download as PDF" Button in Your SaaS](https://transactional.dev/blog/how-to-build-a-download-as-pdf-button-in-your-saas-2): The complete guide to wiring a download-as-PDF feature in your SaaS — backend endpoint, API call, signed URL, and download response, step by step. - [How to Generate a PDF from a React App](https://transactional.dev/blog/how-to-generate-a-pdf-from-a-react-app): Stop fighting with jsPDF and html2canvas. Learn how to generate PDFs from a React app by calling a backend API instead of fragile client-side rendering. - [How to Send a PDF Attachment in a Transactional Email](https://transactional.dev/blog/how-to-send-a-pdf-attachment-in-a-transactional-email): Learn how to generate a PDF and attach it to a transactional email using Resend or Postmark. Complete webhook handler with code examples. - [How to Generate PDFs in Your AI Coding Agent Workflow](https://transactional.dev/blog/how-to-generate-pdfs-in-your-ai-coding-agent-workflow): Your AI coding agent can now handle PDF generation end-to-end via MCP. - [HTML to PDF at Scale: What Breaks and How to Fix It](https://transactional.dev/blog/html-to-pdf-at-scale-what-breaks-and-how-to-fix-it): Generating PDFs from HTML works fine at low volume. Here is what breaks at scale. - [How to Generate PDFs from HTML in a Node.js App](https://transactional.dev/blog/how-to-generate-pdfs-from-html-in-a-node-js-app): From Puppeteer to PDF APIs: a practical guide to generating PDFs from HTML in Node.js. - [How to Generate PDF Receipts After a Stripe Payment](https://transactional.dev/blog/how-to-generate-pdf-receipts-after-a-stripe-payment): Every payment needs a receipt. Here is how to generate a PDF automatically from a Stripe webhook. - [How to Generate Invoice PDFs with an API](https://transactional.dev/blog/how-to-generate-invoice-pdfs-with-an-api): Every SaaS that handles payments needs to generate invoices. And every team that builds invoice generation from scratch regrets it. Here's how to skip the pain and set up a reusable invoice template you can call from any backend. - [Stop Maintaining Your Own PDF Rendering Stack](https://transactional.dev/blog/stop-maintaining-your-own-pdf-rendering-stack-2): You shipped a PDF feature. Maybe it was invoices, contracts, or reports. You picked Puppeteer, it worked. That was six months ago. Now you're debugging memory leaks at 2 AM, your Docker image is 1.8 GB, and you just spent a week figuring out why a Thai font renders as boxes in production. - [How to Replace Puppeteer with a PDF API (and Why You Should)](https://transactional.dev/blog/how-to-replace-puppeteer-with-a-pdf-api-and-why-you-should): Puppeteer is great for browser automation. It's not great as PDF infrastructure. If you're running headless Chrome in production just to generate invoices or reports, you've probably already felt the pain. Here's how to migrate away from it. ## Feeds - [RSS](https://transactional.dev/blog/rss.xml) - [Sitemap](https://transactional.dev/sitemap.xml)