Alternatives

Choosing a PDF generation tool

Honest comparisons rather than sales pages. Each one covers what the tool does well, where it breaks, how to migrate if you decide to — and, importantly, when you should not.

The short version: if PDF generation is the core of your product, own the rendering. If it is a feature, renting it is usually cheaper than the operational time it replaces.

The landscape at a glance

ToolMaintainedEngineJavaScriptYou runBest for
wkhtmltopdfArchivedOld WebKit forkNo (dated)Self-hosted binaryLegacy systems still running it
WeasyPrintActiveOwn layout engineNoPython libraryDocument-shaped HTML, print typography
PuppeteerActiveChromiumYesNode library + browserFull control, you run the fleet
PlaywrightActiveChromium, Firefox, WebKitYesLibrary + browserSame, with more browsers
PDFGenyActiveChromium + WeasyPrintYesHosted APIDocuments as a feature, not a product

The three real choices

A library that is not a browser — WeasyPrint, dompdf, TCPDF, mPDF. Fast, cheap, no browser to operate, and no JavaScript. Excellent when you author the document yourself and it is mostly text and tables.

A browser you run — Puppeteer or Playwright driving Chromium. Perfect fidelity, complete control, and an ongoing operational commitment: memory, pooling, crash recovery, patching.

A browser someone else runs — a hosted API. Same engine, no infrastructure, a per-document price and a network hop.

There is no fourth option that avoids all the trade-offs. Anyone claiming otherwise is selling something.

When not to switch

Your current tool works and volume is flat. A migration costs real engineering time; 'it is old' is not by itself a reason.

Documents cannot leave your network. Regulatory constraints make a hosted API the wrong answer regardless of price.

Very high, steady volume. Above roughly a hundred thousand documents a month, a dedicated render box usually beats per-document pricing — and at that scale you have someone to run it.

You need to edit or read existing PDFs. That is a different problem; none of the tools here solve it.

How to evaluate honestly

Render your most complicated real document, not a fixture. The customer with fourteen line items and a five-line address is the one who finds the difference.

Measure warm, not cold. Including browser startup in every measurement makes browser-based tools look four times slower than they are in production.

Check fonts explicitly with pdffonts. A close fallback looks almost right until someone compares two documents side by side.

Test the failure path: what happens when a page hangs, a font server is down, or a document is malformed. That is where hosted and self-hosted differ most.

Questions

Is wkhtmltopdf really dead?

The repository is archived and receives no fixes. It still runs, and for simple documents it still produces acceptable output. The risk is an unpatched rendering engine in your infrastructure and CSS support frozen years ago.

Is WeasyPrint worse than a browser?

No — different. For documents authored for print it often produces better typography than Chromium. It simply does not run JavaScript, so it cannot render pages that build themselves client-side.

Should I use Puppeteer or Playwright?

Playwright, in most new projects: better waiting primitives, more browsers, and a saner API. Both drive the same Chromium for PDF purposes.

What does PDFGeny cost compared with running my own?

At 1,000 documents a month, $9 against a server plus your time. At 100,000 a month, $99 against a server plus your time — the comparison flips somewhere above that, depending on what your hours cost.

Measured numbers rather than opinions: WeasyPrint versus Playwright timings and six conversion methods compared.