htmlpdf

HTML zu PDF · JavaScript

HTML zu PDF mit Puppeteer

Puppeteer steuert ein echtes Chromium ueber das DevTools-Protokoll. Dadurch rendert es jede Seite exakt so wie der Browser und schreibt das Ergebnis mit page.pdf() in eine Datei. Ideal fuer komplexe Layouts.

Code-Beispiel

import puppeteer from "puppeteer";

const html = "<h1>Rechnung</h1><p>Betrag: 199,00 Euro</p>";

const browser = await puppeteer.launch({ headless: "new" });
const page = await browser.newPage();

await page.setContent(html, { waitUntil: "networkidle0" });

await page.pdf({
  path: "rechnung.pdf",
  format: "A4",
  printBackground: true,
  margin: { top: "20mm", bottom: "20mm", left: "15mm", right: "15mm" },
});

await browser.close();

Hinweise

Puppeteer liefert die beste moderne CSS-Unterstuetzung im gesamten Vergleich, weil es ein vollstaendiges Chromium verwendet. Flexbox, Grid, CSS-Variablen, Webfonts, SVG und sogar JavaScript-gerenderte Inhalte funktionieren ohne Workarounds. Die Option printBackground sorgt dafuer, dass Hintergrundfarben und Bilder im PDF erscheinen. Ueber @page-Regeln und das Property page-break-inside steuerst du Seitenumbrueche praezise. Kopf- und Fusszeilen lassen sich mit headerTemplate und footerTemplate setzen, inklusive Seitenzahlen. Der Preis ist Gewicht: Chromium braucht mehrere hundert Megabyte und einige Sekunden Startzeit, weshalb sich ein gemeinsam genutzter Browser-Pool in produktiven Diensten lohnt. Fuer Layouts, die exakt der Bildschirmansicht entsprechen sollen, ist Puppeteer die zuverlaessigste Wahl in der Node-Welt.

Anzeige

FAQ

Häufige Fragen

Wie bekomme ich Seitenzahlen ins PDF?

Setze in page.pdf() ein footerTemplate mit der Klasse pageNumber und totalPages und aktiviere displayHeaderFooter. Chromium ersetzt die Platzhalter automatisch.

Werden externe Schriften korrekt geladen?

Ja. Mit waitUntil networkidle0 wartet Puppeteer, bis Webfonts geladen sind. Lokale Schriften bindest du am sichersten als Base64 im CSS ein.

Ohne Code geht es auch: Der HTML-zu-PDF-Converter wandelt direkt im Browser um, ohne Installation und ohne Upload.

Anzeige
Anzeige
Anzeige
Anzeige