Legacy Migration Guide

A wkhtmltopdf Alternative built for Modern Frontends.

wkhtmltopdf was incredibly influential. But it officially ceased maintenance in 2023, is locked to an ancient QtWebkit rendering engine, and silently fails when rendering Tailwind CSS, Flexbox, and CSS Grid.

wkhtmltopdf Alternative

The "Missing CSS" Problem

If you're reading this, you probably just spent three hours trying to figure out why your beautiful HTML invoice looks totally broken when converted.

Because wkhtmltopdf relies on a QtWebKit engine effectively frozen in time over a decade ago, it simply does not know what modern CSS paradigms are. Developers are forced to rewrite modern React layouts using archaic CSS float overrides and table-based layouts just to satisfy the generator.

  • No CSS Grid: Grid containers generally collapse entirely.
  • Broken Flexbox: Flex properties are highly unpredictable. Sometimes they work, sometimes elements stack violently on top of each other.
  • JavaScript Hydration: Charting libraries (like Chart.js/Recharts) often fail to instantiate before wkhtmltopdf aggressively takes its print snapshot.

PDFBridge vs wkhtmltopdf (2026 Comparison)

Feature SetwkhtmltopdfPDFBridge API
Project Status Abandoned / Unmaintained Actively Maintained
Browser Engine 2012 QtWebKit Latest Chromium V8
Tailwind & Flexbox Fails silently Native JIT execution
Infrastructure Manage & scale your own servers Hosted, scalable REST API

The Solution: Modern Browsers Delivered via API

Developers shouldn't have to rewrite their entire CSS architecture just to satisfy a PDF engine.

PDFBridge processes your HTML and URLs using the very latest Chromium headless instances sitting behind a horizontally scalable queuing engine. It natively understands CSS Grid, Flexbox, custom WOOF/OTF fonts, and dynamic Javascript charts. If it renders correctly in Chrome, it prints perfectly in PDFBridge.

Deleting the CLI Tool

Remove the buggy Linux binaries from your Docker containers and switch to HTTP requests.

// OLD: Shell execution (Blocking, fragile)
// exec('wkhtmltopdf http://google.com file.pdf');

// NEW: PDFBridge Node SDK
import PDFBridge from "@techhspyder/pdfbridge-node";

// Automatically uses process.env.PDFBRIDGE_API_KEY
const pdfBridge = new PDFBridge();

const job = await pdfBridge.generateAndWait({
    url: "https://nextjs-app.com/report/59",
    options: {
      format: "Letter",
      printBackground: true
    }
});

console.log(job.pdfUrl);

Migrate away from legacy WebKit today.

Get 2,000 document conversions and full Tailwind support for just $10/mo.