HTML zu PDF · Python
HTML zu PDF mit Python und pdfkit
pdfkit ist ein duenner Python-Wrapper um das CLI-Werkzeug wkhtmltopdf. Es uebersetzt einfache Funktionsaufrufe in Kommandozeilen-Optionen und gibt das fertige PDF zurueck. Die wkhtmltopdf-Binary muss separat installiert sein.
Code-Beispiel
import pdfkit
html = "<h1>Lieferschein</h1><p>Position 1: Kabel</p>"
options = {
"page-size": "A4",
"margin-top": "20mm",
"margin-bottom": "20mm",
"enable-local-file-access": "",
}
pdfkit.from_string(html, "lieferschein.pdf", options=options)
# Aus Datei oder URL
pdfkit.from_file("seite.html", "seite.pdf", options=options) Hinweise
pdfkit selbst rendert nichts, sondern ruft im Hintergrund wkhtmltopdf auf. Damit erbt es die Eigenschaften der WebKit-basierten Binary: schnelle, genuegsame Erzeugung einfacher Dokumente, aber eingeschraenkte Unterstuetzung moderner CSS-Features wie Grid. Der Mehrwert liegt in der bequemen Python-API. Statt Kommandozeilen-Strings zusammenzubauen, uebergibt man HTML als String, Datei oder URL und konfiguriert Optionen ueber ein Dictionary. Die Schluessel entsprechen direkt den wkhtmltopdf-Flags, weshalb sich Doku und Wissen direkt uebertragen lassen. Wichtig ist, dass die wkhtmltopdf-Binary im Pfad liegt oder explizit ueber configuration gesetzt wird, sonst schlaegt der Aufruf fehl. Fuer lokale Ressourcen muss enable-local-file-access gesetzt sein. pdfkit eignet sich gut fuer Teams, die in Python arbeiten, schnell Reports brauchen und mit den CSS-Grenzen der WebKit-Engine leben koennen.
FAQ
Häufige Fragen
Brauche ich wkhtmltopdf zusaetzlich zu pdfkit?
Ja. pdfkit ist nur ein Wrapper und ruft die wkhtmltopdf-Binary auf. Diese muss auf dem System installiert und im Pfad erreichbar sein, sonst schlaegt der Aufruf fehl.
Wie reiche ich CSS-Optionen durch?
Ueber das options-Dictionary. Die Schluessel entsprechen den wkhtmltopdf-Flags, etwa page-size oder margin-top. Leere Werte stehen fuer Schalter ohne Argument.
Ohne Code geht es auch: Der HTML-zu-PDF-Converter wandelt direkt im Browser um, ohne Installation und ohne Upload.