Software Engineer at PDF4.dev
Software engineer and founder of PDF4.dev, building developer tools for PDF generation and document automation.

Engineering deep-dive: recompressing images inside a PDF with pdf-lib, DecompressionStream, PNG predictors, and OffscreenCanvas workers, entirely in the browser.

Generate purchase order PDFs from an HTML template with dynamic line items, then render with a headless browser or a hosted API. Node.js and Python code.

Digitally sign a PDF in code: the difference between a visible signature image and a cryptographic PKCS#7 signature, with Node.js and Python libraries and an honest scope.

Remove blank pages from a PDF automatically. Detect and delete empty pages in your browser, with Python (pypdf), or Node.js (pdf-lib and pdf.js), no upload.

Render Arabic, Hebrew, and Persian text correctly in HTML to PDF: set dir=rtl, load a font with the right glyphs, and let Chromium shape the bidi text.

Turn Google Forms submissions into PDFs automatically: an Apps Script on-submit trigger that maps responses to a template and renders a PDF, emailed or saved to Drive.

Generate PDFs in Google Apps Script: the built-in getAs("application/pdf") for Docs and Sheets, HtmlService, or a hosted PDF4.dev API for full HTML and CSS control.

Insert pages into a PDF at any position: add a blank page or copy pages from another file. Browser, Python (pypdf), Node.js (pdf-lib), and CLI methods.

Add a clickable table of contents and PDF bookmarks: build it from HTML anchors when converting with Chromium, or add outline entries to an existing PDF with pdf-lib.

Generate PDFs in Elixir and Phoenix: ChromicPDF for HTML to PDF via headless Chromium, pdf_generator, Gutenex, and a hosted PDF4.dev API, with code and tradeoffs.

Generate PDFs from Supabase Edge Functions: why the Deno runtime has no Chromium, using pdf-lib or jsPDF, or calling a hosted PDF4.dev API for HTML to PDF.

Dompdf and mPDF both turn HTML into PDF in pure PHP. CSS support, fonts, tables, performance and which one to pick, plus when a browser engine wins.

Generate PDFs on Vercel: serverless functions with Playwright and @sparticuz/chromium, why the Edge runtime cannot, plus a hosted PDF4.dev API that needs no browser.

Render Chinese, Japanese, Korean, Arabic, Hebrew, RTL text, and color emoji in HTML-to-PDF. Fix tofu boxes with the right fonts, unicode-range, and dir attributes.

Wire PDF4.dev into Cursor over MCP so the AI editor can create templates and render PDFs from your codebase. One-click config, the tools exposed, and a real workflow.

Mix portrait and landscape pages in one PDF with CSS named pages and preferCSSPageSize, or render each section and merge with pdf-lib. Copy-paste code included.

Generate PDFs on AWS Lambda: Playwright or Puppeteer with @sparticuz/chromium, the size and cold-start limits, plus a hosted PDF4.dev API that needs no Chromium.

Add a barcode to a PDF from HTML using Node.js, Python, or PHP. Render it as a base64 data URI or inline SVG so it scans, with copy-paste code.

ReportLab draws PDFs with code, WeasyPrint renders HTML and CSS to PDF. API style, CSS support, fonts, charts and when to choose each in Python.

Generate PDFs in Ruby: Prawn for drawing, Grover or WickedPDF for HTML to PDF via a browser, plus a hosted PDF4.dev API. With code for each and honest tradeoffs.

Turn JSON into a PDF: bind the data to an HTML and Handlebars template, then render with a browser engine or a hosted PDF4.dev API. Arrays, totals and nested objects.

Convert CSV to PDF by mapping rows to an HTML table, then rendering with a browser engine. Python and Node.js code, formatting tips, and a hosted API path.

Generate PDFs in Fastify: a route returning Playwright or Puppeteer output, pdfkit for drawing, plus a hosted PDF4.dev API. With reply headers and a warm browser.

PDF/A is ISO 19005, the archival PDF standard. Compare PDF/A-1, A-2, A-3, and A-4, see what each level requires, and convert and validate PDFs yourself.

Gotenberg is a Dockerized PDF API you self-host, Playwright is a browser-automation library you embed. Setup, fidelity, scaling and when each one fits.

Generate 10,000 PDFs without crashing your server. Concurrency limits, queue patterns, memory budgets, retries, and ZIP delivery for batch PDF generation in Node.js.

Generate PDFs in NestJS: a controller streaming Playwright or Puppeteer output, pdfkit for drawing, plus a hosted PDF4.dev API with no Chromium to manage.

Give Claude the ability to generate PDFs: connect it to PDF4.dev over MCP, or call the REST API from a tool definition, so the model creates real documents.

Convert PPTX to PDF for free with PowerPoint, LibreOffice CLI, Python, or Node.js. Fix missing fonts, notes pages, and slide sizing, plus batch conversion.

Generate PDFs in an Electron app: the built-in webContents.printToPDF (no dependency), Puppeteer, or a hosted PDF4.dev API for server-side rendering.

Convert XLSX to PDF for free with Excel, LibreOffice CLI, Python, or Node.js. Fix fit-to-page scaling, print areas, and cut-off columns, plus batch conversion.

Turn Notion pages and database rows into PDFs: a script via the Notion API, a no-code n8n flow, or a template render, each producing a styled PDF.

Generate PDFs in Symfony: KnpSnappyBundle with wkhtmltopdf, Dompdf and mPDF for HTML to PDF, Gotenberg for Chromium, plus a hosted PDF4.dev API.

Convert PDF to Markdown with MarkItDown, Marker, and Docling in Python, pdfjs-dist in Node.js, plus how to clean output for LLM and RAG ingestion.

Fill AcroForm PDF fields in code with pdf-lib (text fields, checkboxes, dropdowns, radio groups), flatten the result, or generate a filled PDF from HTML instead.

How PDF font embedding and subsetting work: why fonts go missing, how subsetting cuts file size, the standard 14 fonts, and how to check what is embedded.

Generate PDFs from HTML in Java: openhtmltopdf and Flying Saucer for XHTML to PDF, Playwright for Java for full Chromium fidelity, plus a hosted PDF4.dev API.

Generate PDFs in a Hono app across every runtime: Playwright on Node and Bun, pdf-lib on Cloudflare Workers, or a hosted PDF4.dev API with no browser.

PDFKit draws new PDFs from a stream, pdf-lib creates and edits existing PDFs. Features, editing support, fonts, bundle size and when to pick each in Node.js.

Convert PDF tables to CSV: free browser method, Python with Camelot and pdfplumber, Node.js with pdfjs-dist, and how to handle scanned PDFs with OCR.

Generate PDFs in Rust: printpdf and genpdf for drawing, headless_chrome or chromiumoxide for HTML to PDF, plus a hosted PDF4.dev API over reqwest.

Convert PDF to Word with open source tools: LibreOffice, pdf2docx, Calibre, and poppler compared on layout fidelity, tables, batch use, and licenses.

Convert PDF to DOCX in Python with pdf2docx: Converter API, convert(start, end, pages), multiprocessing, tables, plus LibreOffice and OCR for scans.

WeasyPrint is free and open source, Prince is commercial with deeper CSS print support. A side-by-side of CSS coverage, price, output quality and when each wins.

Generate PDFs in Nuxt with a Nitro server route: Playwright or Puppeteer for HTML to PDF, jsPDF on the client, or a hosted PDF4.dev API with no Chromium to ship.

Generate PDFs in Remix: resource routes with Playwright or Puppeteer for HTML to PDF, jsPDF on the client, plus a hosted PDF4.dev API with no Chromium to ship.

Generate PDFs in Astro: server endpoints with Playwright or Puppeteer for HTML to PDF, client-side jsPDF, plus a hosted PDF4.dev API with no Chromium to ship.

Automate PDF conversion with soffice --headless --convert-to: DOCX to PDF, PDF to Word, images to PDF, batch folders, parallel profiles, and Docker.

Why images go missing in HTML to PDF and how to fix them: base64 data URIs, absolute URLs, waiting for load, printBackground, and CORS, with working code.

Generate PDFs in Flask: WeasyPrint and xhtml2pdf for HTML to PDF, ReportLab for drawing, Playwright for full Chromium fidelity, plus a hosted PDF4.dev API.

Looking for a PDFShift alternative? PDF4.dev, Doppio, APITemplate, DocRaptor, and Gotenberg compared on pricing model, templates, free tier, and API design.

How to generate PDFs in Docker with Playwright or Puppeteer. Dockerfile, system dependencies, fonts, image size, zombie processes, and when to skip Chromium.

OCR a PDF to make scanned pages searchable: detect image-only pages, run OCRmyPDF or Tesseract, tune DPI and language packs, and batch process a whole folder.

Turn Airtable records into PDFs: a script via the Airtable API, an automation script action, or a no-code n8n flow, each rendering a template to PDF.

Add Bates numbering to a PDF: stamp sequential legal page identifiers with a prefix, fixed digit count, and start value using pdf-lib in Node.js, step by step.

Generate PDFs in Angular: jsPDF and pdfmake on the client, html2canvas for DOM capture, a server endpoint with Playwright, plus a hosted PDF4.dev API.

jsPDF draws PDFs imperatively, pdfmake builds them from a declarative document definition. Features, tables, fonts, bundle size and when to pick each.

Generate PDFs in SvelteKit: server endpoints with Playwright or Puppeteer for HTML to PDF, jsPDF on the client, plus a hosted PDF4.dev API.

Turn a plain-language prompt into a reusable HTML and Handlebars PDF template with an LLM, then render it to PDF on demand. Patterns, prompts and guardrails.

Generate PDFs in Deno: Playwright and Puppeteer via npm specifiers for HTML to PDF, jsPDF and pdf-lib for drawing, plus a hosted PDF4.dev API.

pdf-lib writes and edits PDFs, pdf.js reads and renders them. A side-by-side of features, bundle size, and the tasks each one is built for.

Generate PDFs in an Express.js app: Puppeteer and Playwright for HTML to PDF, pdfkit for drawing, plus a hosted PDF4.dev API with no browser to manage.

Puppeteer vs WeasyPrint for HTML to PDF: Node.js Chromium versus Python CSS rendering, with real benchmark numbers, JavaScript support, and CSS coverage.

Generate PDFs in Vue and Nuxt in 2026: client-side jsPDF, server-side Playwright in Nitro routes, and a hosted HTML-to-PDF API, with the tradeoffs.

How to generate PDFs in Bun in 2026: Puppeteer support, why Playwright is unofficial, pure-JS libraries with no browser, and the hosted API escape hatch.

Extract embedded images from any PDF, free online or with Python and JavaScript. Pull out JPEGs and PNGs at full quality, or render pages to images.

Generate PDFs in FastAPI: render a Jinja2 template, convert with WeasyPrint or async Playwright, or call a PDF API. Full async code, comparison table, tips.
Generate PDFs in Django: render a template, convert with WeasyPrint or Playwright, or call a PDF API from a view. Complete code, comparison, tips.

HTML to PDF renders in RGB, but offset print shops want CMYK. Learn the difference, when each matters, and how to convert a PDF to CMYK with Ghostscript.
Generate PDFs in .NET and C# with QuestPDF, Playwright for .NET, PuppeteerSharp, or a REST API. Real ASP.NET Core code, an options table, and production tips.

wkhtmltopdf is archived and unmaintained. Compare the best 2026 alternatives (Playwright, Puppeteer, WeasyPrint, Gotenberg) and pick a safe migration path.

Add a QR code to a PDF from HTML using Node.js, Python, or PHP. Embed it as a base64 data URI or inline SVG so it always renders, with copy-paste code.
Puppeteer vs wkhtmltopdf for HTML to PDF: rendering engine, CSS and JS support, deployment, and why wkhtmltopdf is now deprecated.

Add charts to a PDF with Chart.js using headless Chromium. Why JavaScript chart libraries fail in WeasyPrint and wkhtmltopdf, with working Node.js code.

Clickable links work automatically when you convert HTML to PDF with Chromium. Add external links, internal anchors, a table of contents and bookmarks.
WeasyPrint vs wkhtmltopdf compared: wkhtmltopdf is archived since 2023, WeasyPrint is actively maintained pure Python. Which to use and how to migrate.

PDF page size reference: A4, Letter, Legal and full A-series dimensions in points, mm, inches and pixels, plus how to set the page size in HTML to PDF.

Developer guide to producing WCAG 2.2 and PDF/UA-2 compliant tagged PDFs from HTML for the European Accessibility Act, with veraPDF in CI and audit-passing patterns.

Build a custom Stripe PDF invoice flow with webhooks: Stripe payment.succeeded → render branded PDF via PDF4.dev → email link. Full working repo, 80 lines.

Refreshed HTML to PDF benchmark for Q3 2026: Playwright, Puppeteer, chrome-headless-shell, WeasyPrint, Gotenberg, PDF4.dev. Cold start, warm pool, RAM.

HTML forms do not auto-become PDF forms when you print. Here are the three working paths to ship interactive, fillable PDFs from a code-first workflow.

Looking for a PDFMonkey alternative? Side-by-side of Doppio, APITemplate, CraftMyPDF, DocRaptor, PDF4.dev. Pricing, templates, API, free tier.

PDF generation on Cloudflare Workers in 2026: why workerd cannot run Chromium, when Browser Rendering wins, WASM alternatives, and the API escape hatch.

Side-by-side benchmark of ChatGPT, Claude, Gemini, and Perplexity reading the same 50-page PDF. Cost, latency, citation accuracy, file-size caps.

PDF generation in Ruby on Rails in 2026: WickedPdf, Grover, Ferrum PDF, ChromicPDF wrappers, Prawn, hosted APIs. Pick the right one for invoices and reports.

Applying Anthropic's code-execution-with-MCP pattern to PDF4.dev for batch document generation. The architecture, the token math, the security model, and concrete TypeScript code.

Side-by-side test of the best PDF-to-Word converters in 2026: Adobe, LibreOffice, pdf2docx, ABBYY, Google Docs. Accuracy, cost, batch automation.

How page.pdf() headerTemplate and footerTemplate actually work: 4 documented footguns fixed, plus a DOM trick for complex header and footer layouts.

react-pdf vs Playwright for PDF: when to use each, what react-pdf can't do, why most React teams switch to HTML to PDF for production.

PDF generation in Laravel: Spatie Browsershot, DomPDF, Snappy, hosted APIs. Pick the right one for invoices, reports, and high-volume rendering.

How to convert PDF tables to Excel: best free tools, when client-side extraction works, when you need OCR, and how to automate it from Node.js or Python.

PDF generation in Spring Boot: OpenPDF, iText, OpenHTMLToPDF, Playwright sidecar, hosted APIs. Pick the right one for invoices, reports, and high volume.

Real-time dashboard sync looked trivial on localhost. In production we hit Railway's 5-minute HTTP cap, a known Next.js App Router ResponseAborted crash, and EventEmitter leak warnings. Here is the exact code we ship to handle all three.

Inside PDF4.dev's MCP server: 14 tools, 4 resources, 3 prompts, outputSchema everywhere, structured errors, and the SSOT that keeps llms.txt and the docs site in sync with the code.

pdf4.dev now updates every open dashboard tab the moment an AI agent or an API call writes a template, a component, or a PDF render log. Inside the architecture: SSE, an in-process EventEmitter bus, and the Railway and Next.js gotchas we had to work around.

Convert SVG to PDF without losing vector quality. Compares Inkscape, rsvg-convert, Playwright, and svg2pdf.js with code, font handling, and page-fit tips.

Three ways to connect ChatGPT to a PDF generation API: Custom GPT actions, the experimental MCP server support, and the Assistants API with function calling. Full OpenAPI snippet, auth setup, and signed URL delivery.

Step-by-step no-code guide to automating PDF generation with Zapier and Make.com. Typeform to PDF receipt, email delivery, Google Drive storage, and a full Zapier vs Make comparison.

Design and generate PDF certificates for courses, events, and HR programs. Covers layout, seals, signature lines, QR verification, batch rendering from CSV, and localization.

Learn how to use Handlebars as a PDF templating language. Variables, blocks, helpers, partials, escaping, and a full invoice example you can run today.

Yes, Claude can create PDFs natively since April 2026. What it handles well, where it fails (bulk, latency, pixel-perfect layout), and when a PDF API wins.

An operational guide to running PDF generation at scale: caching, retries, timeouts, browser pool lifecycle, memory, observability, and cost. Real numbers from the PDF4.dev production stack.

Two ways to turn React components into PDFs: server-render JSX to HTML and print with Chromium, or use @react-pdf/renderer. Includes Tailwind, MUI, and benchmarks.

Convert Markdown to PDF five ways: Pandoc with LaTeX, marked plus Playwright, markdown-it plus Puppeteer, and a REST API. Covers GFM, math, mermaid, and page breaks.

Use per-recipient watermarks to deter PDF leaks, create legal evidence, and trace shared documents. Code examples, tile patterns, and DRM comparison.

Why Playwright and serverless are a painful match. Cold starts, size limits, Cloudflare Workers, @sparticuz/chromium, and when to call an API instead.

Embed custom fonts in HTML-to-PDF rendering with Playwright, Python, and PDF4.dev. Covers Google Fonts, self-hosting, FOUT, variable fonts, and CJK.

How PDF encryption works across RC4, AES-128, and AES-256, with the real security level of each version, known weaknesses, and which to use today.

PDF or JPG? A side-by-side comparison covering photos, documents, lossy vs lossless compression, file size, color, EXIF, and print workflows.

PDF or PNG? A practical comparison of the two formats covering documents, images, vector vs raster, file size, transparency, and archiving.

Edit PDF metadata online for free, or automate it with pdf-lib, PyMuPDF, Ghostscript, and ExifTool. Covers document info dictionary and XMP metadata.

Build a certificate generator with HTML templates, Google Fonts, and a single API call. Covers design, batch generation from CSV, watermarks, and security.

Convert DOCX to PDF for free using Microsoft Word, LibreOffice CLI, Python, Node.js, or Google Docs API. Includes batch conversion and formatting fixes.

Repair a corrupted PDF online for free, or automate recovery with pdf-lib, PyMuPDF, Ghostscript, and qpdf. Covers xref rebuilding and common corruption causes.

Generate PDFs from HTML in Golang with chromedp or Rod (full code), what +300 MB of Chromium does to your Docker image, and the zero-dependency API path.

Resize PDF pages online for free, or automate it with pdf-lib, PyMuPDF, Ghostscript, and qpdf. Covers A4 to Letter conversion and custom dimensions.

Restrict editing, copying, and printing in any PDF using permissions passwords, flattening, and watermarks. Free tools and code examples included.

Convert a PDF to grayscale online for free, or automate it with pdfjs + pdf-lib, PyMuPDF, Ghostscript, and ImageMagick. Covers color models and file size impact.

Crop a PDF page online for free, or automate it with pdf-lib, PyMuPDF, Ghostscript, and qpdf. Covers CropBox vs MediaBox and batch cropping.

Flatten a PDF in seconds: free online tool, no upload, plus pdf-lib, PyMuPDF, Ghostscript, and qpdf code examples for batch automation.

Convert any webpage to PDF using a free browser tool or automate with Playwright. Covers JavaScript pages, lazy loading, and bot-detection workarounds.

Save specific pages from a PDF into a new file, free and in your browser. Covers browser tool, macOS, Python, Node.js, and command-line methods.

Inside PDF4.dev's rendering pipeline. Singleton browser pool, Handlebars compilation cache, the thead/tfoot trick for repeating headers, and page number stamping via pdf-lib.

PDF4.dev's 24 free tools process files entirely client-side using pdf-lib and pdfjs-dist. No upload, no server, no privacy risk. Here is how the architecture works.

AI document generation lets you create PDFs, invoices, and reports from natural language prompts. Full guide covering MCP, LLM workflows, and production APIs.

Learn how to permanently redact sensitive text and images in PDFs. Covers free browser tools, Python scripts, and why simple highlighting fails security audits.

Export Google Sheets data to PDF automatically: built-in export, Apps Script automation, Zapier/Make no-code workflows, and API-based generation for production use.

Delete pages from a PDF in seconds, free and without uploading files. Browser-based tool, Python script, Node.js API, and command-line methods covered.

Add page numbers to any PDF in seconds. Free online tool, no upload required. Also covers programmatic methods using Python, Node.js, and pdf-lib.

Rearrange PDF pages in any order, free and in your browser, or automate page reordering with JavaScript, Python, and pdf-lib. No upload needed.

Extract text from any PDF in seconds, free and online, or automate it with JavaScript, Python, and the PDF.js API. No signup required for the free tool.

Generate professional PDF invoices with AI using Claude and PDF4.dev. Full tutorial with Node.js code, Handlebars templates, and MCP integration examples.

Convert HTML to PDF online, in the browser, or via API. Free tool, browser printing, Node.js, Python, PHP, and REST API methods compared.

Generate PDFs in Next.js 14+ App Router using server actions, API routes, and Playwright. Includes React-to-PDF, dynamic templates, and PDF4.dev API examples.

Generate PDFs from HTML in PHP using Dompdf, headless Chromium, or a REST API. Covers Laravel, Symfony, dynamic templates, fonts, and production tips.

MCP lets AI agents call external tools directly. Learn what MCP is, how the protocol works, and how to connect Claude, ChatGPT, Cursor, or VS Code to a PDF API in under 3 minutes.

Generate PDFs from HTML in Python using WeasyPrint, Playwright, or a REST API. Covers Flask, FastAPI, dynamic templates, fonts, and production tips.

Add text watermarks to any PDF for free in your browser. Interactive designer, code examples with pdf-lib and Python, plus API automation.

Remove a PDF password instantly in your browser or with qpdf on the command line. Files stay on your device. Works on Mac, Windows, and mobile.

Compress a PDF for email in seconds with no quality loss. Covers email size limits, free browser tools, Ghostscript, and Python one-liners. 2026 guide.

Master @media print, @page margins, page breaks, widows/orphans, and table headers. Interactive demos show each CSS property in action.

Convert PDF to editable DOCX free with Microsoft Word, Google Docs, LibreOffice, or Python pdf2docx. Which method keeps layout, tables, and equations intact.

PDF conversion explained: convert PDF to JPG, PNG, Word, HTML and more. Covers free browser tools, Python, Node.js, and command-line methods. Updated 2026.

Turn JPG, PNG, or multiple images into a single PDF in seconds. Free browser-based tool, no sign-up, files never leave your device.

Rotate one or all PDF pages permanently for free. Browser tool, macOS Preview, command line, and code options. Files stay on your device.

Build automated invoice generation with HTML templates, dynamic data, and a single API call. Covers design, multi-language code examples, compliance, and scaling.

Add a password to any PDF in seconds using free browser-based tools, Adobe Acrobat, or the command line. Files never leave your device.

Convert PDF to JPG online for free without uploading files. Also covers Python, Node.js, and command line methods with JPEG quality and DPI tips.

Use Claude + PDF4.dev MCP to design invoices, certificates, and reports through natural language. A complete walkthrough from blank page to production-ready PDF.

Connect Claude, ChatGPT, Cursor, or any AI agent to PDF4.dev via MCP and generate PDFs with natural language. Step-by-step setup guide with examples.

Build a Node.js PDF generator using Handlebars templates and Playwright. Covers dynamic data, styling, fonts, Docker, and when a PDF API makes more sense.

Convert PDF pages to high-resolution PNG images online, with Python, Node.js, or command line. Includes DPI tips for print-ready output.

Reduce PDF file size by up to 80% while maintaining readable quality. Learn how PDF compression works and the best free methods to shrink your files.

Split any PDF into individual pages or custom page ranges for free, in your browser, from the command line, or via API. No upload required.

Merge multiple PDF files into one document for free. Compare 5 methods including browser-based tools, command-line, and programmatic approaches.

Learn how to merge, split, compress, rotate, reorder, and watermark PDF files. A comprehensive guide covering every PDF manipulation technique with free tools.