htmlpdf

HTML zu PDF · Python

HTML zu PDF mit Python und WeasyPrint

WeasyPrint ist eine reine Python-Bibliothek, die HTML und CSS in PDF umwandelt, ohne einen Browser zu starten. Sie implementiert die CSS-Spezifikation selbst und glaenzt besonders bei der Steuerung von Druckseiten ueber Paged Media.

Code-Beispiel

from weasyprint import HTML

html = """
<style>
  @page { size: A4; margin: 20mm; }
  body { font-family: sans-serif; }
</style>
<h1>Protokoll</h1>
<p>Sitzung vom 1. Juni 2026.</p>
"""

HTML(string=html).write_pdf("protokoll.pdf")

# Aus einer Datei oder URL
HTML(filename="report.html").write_pdf("report.pdf")

Hinweise

WeasyPrint setzt nicht auf eine Browser-Engine, sondern implementiert HTML und CSS direkt in Python. Die grosse Staerke ist die Unterstuetzung von CSS Paged Media: @page-Regeln, benannte Seiten, Seitenraender pro Seitentyp, automatische Seitenzaehler ueber counter sowie Kopf- und Fusszeilen ueber margin boxes funktionieren sauber und standardkonform. Damit eignet sich WeasyPrint hervorragend fuer Rechnungen, Buecher und mehrseitige Berichte mit anspruchsvoller Typografie. Flexbox und Grid werden in neueren Versionen unterstuetzt, JavaScript dagegen nicht, da kein Browser laeuft. Das macht die Bibliothek leichtgewichtig und schnell, verlangt aber statisch gerendertes HTML. Schriften lassen sich bequem ueber @font-face einbinden, und die Ausgabe ist gut reproduzierbar. Fuer Python-Projekte ohne Node-Abhaengigkeit ist WeasyPrint die ausgereifteste Wahl, sofern man kein dynamisch per Skript erzeugtes Markup braucht.

Anzeige

FAQ

Häufige Fragen

Fuehrt WeasyPrint JavaScript aus?

Nein. WeasyPrint ist kein Browser und ignoriert Skripte. Das HTML muss bereits im fertigen Zustand vorliegen, bevor du write_pdf aufrufst.

Wie setze ich Seitenraender pro Seite?

Ueber CSS-Regeln wie @page und benannte Seiten mit @page name. WeasyPrint setzt Paged Media weitgehend standardkonform um, inklusive unterschiedlicher Raender pro Seitentyp.

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

Anzeige
Anzeige
Anzeige
Anzeige