WeasyPrint als gehostete API
Senden Sie HTML, erhalten Sie ein von WeasyPrint gerendertes PDF. 1 Credit pro Rendering, PDF/A in den bezahlten Tarifen, ein MCP-Server und kein Pango-Stack zu installieren.
Zuletzt aktualisiert
| Endpunkt | POST /v1/weasyprint/render mit einem JSON-Body: html (Pflicht), filename (optional), pdf_variant (optional, bezahlte Tarife) |
|---|---|
| Preis | 1 Credit pro Rendering, unabhängig von der Seitenanzahl; abgelehnte und fehlgeschlagene Aufrufe kosten nichts |
| Limits pro Rendering | 2 MB HTML, 50 Seiten, 20 s mit Schlüssel und 8 s ohne |
| MCP-Server | /mcp/weasyprint/ auf dem API-Host, mit dem Tool render_pdf |
| Engine | WeasyPrint 70 mit den DejaVu-Schriften |
pagespool betreibt WeasyPrint, die Open-Source-Engine, die HTML und CSS
als Druckseiten setzt. Senden Sie ein HTML-Dokument an POST /v1/weasyprint/render,
und der Body der Antwort ist das PDF. Print-CSS funktioniert: @page, Randboxen,
Seitenzähler und Seitenumbrüche (CSS-Unterstützung,
auf Englisch). Es läuft kein JavaScript, und nichts wird aus dem Netz geladen.
Ein Rendering kostet 1 Credit, unabhängig von der Seitenanzahl. Abgelehnte und fehlgeschlagene Aufrufe kosten nichts. Ein Rendering nimmt bis zu 2 MB HTML und 50 Seiten an und darf mit API-Schlüssel 20 s laufen, ohne 8 s. Die bezahlten Tarife ergänzen die Ausgabe als PDF/A-2b und PDF/A-3b (Preise). Es sind dieselben Credits, die jede andere Engine hier verbraucht.
Schnellstart mit curl
Dieser Aufruf funktioniert ohne API-Schlüssel, mit 10 kostenlosen Credits am Tag pro IP-Adresse:
curl -X POST https://api.pagespool.com/v1/weasyprint/render \
-H 'Content-Type: application/json' \
-H "X-API-Key: $PAGESPOOL_KEY" \
-d '{"html": "<h1>Invoice 1</h1><p>Thanks for your business.</p>", "filename": "invoice.pdf"}' \
-o invoice.pdf -w '%{http_code}\n'
Ein anderer Status als 200 bedeutet, dass invoice.pdf einen JSON-Fehler statt
eines PDFs enthält (Fehlercodes,
auf Englisch). Für PDF/A in einem bezahlten Tarif ergänzen Sie
"pdf_variant": "pdf/a-2b" im JSON.
Schnellstart mit Python
httpx oder requests ist die ganze Integration. Hier reist der Schlüssel als
HTTP Basic, mit dem Schlüssel als Passwort:
import os
import httpx
resp = httpx.post(
"https://api.pagespool.com/v1/weasyprint/render",
json={"html": "<h1>Report</h1><p>Generated in Python.</p>", "filename": "report.pdf"},
auth=("x", os.environ["PAGESPOOL_KEY"]),
timeout=30,
)
if resp.status_code != 200:
problem = resp.json()
raise RuntimeError(f"{resp.status_code} {problem['code']}: {problem['detail']}")
with open("report.pdf", "wb") as f:
f.write(resp.content)
Mehr im Python-Leitfaden und im Node.js-Leitfaden, beide auf Englisch.
Drei Wege, den Schlüssel zu senden
Jede Engine hier nimmt den Schlüssel in einer von drei Formen an. Wählen Sie die, die Ihr Client unterstützt:
| Form | Was Sie senden |
|---|---|
| Header | X-API-Key: YOUR_KEY |
| Bearer-Token | Authorization: Bearer YOUR_KEY |
| HTTP Basic | Den Schlüssel als Passwort, beliebiger Benutzername: curl -u x:YOUR_KEY oder auth=("x", key) |
Ein Client, der nur eine URL annimmt, sendet HTTP Basic, wenn der Schlüssel in
der URL steht: https://x:YOUR_KEY@ gefolgt vom API-Host. Setzen Sie den
Schlüssel nie in den Pfad oder den Query-String. Schlüssel erstellen Sie im
Dashboard. Ein fehlender oder ungültiger Schlüssel lässt ein
Rendering nicht scheitern; es läuft dann mit dem Limit für Aufrufe ohne
Schlüssel.
Selbst gehostet oder gehostet
WeasyPrint ist Open Source, und Sie können es selbst betreiben.
| WeasyPrint selbst gehostet | Hier gehostet | |
|---|---|---|
| Einrichtung | Python plus die Pango-, HarfBuzz- und Schriftpakete Ihres Systems, aktuell gehalten | Ein API-Schlüssel |
| Nicht vertrauenswürdiges HTML | Die Doku von WeasyPrint rät, Renderzeit und Arbeitsspeicher pro Prozess zu begrenzen und Datei- und Netzwerk-URLs zu sperren | Jedes Rendering läuft in einem eigenen Prozess, wird an seinem Zeitlimit beendet und hat höchstens 768 MiB Arbeitsspeicher; nur data:-URIs werden geladen |
| Arbeitsspeicher | Planen Sie für das größte Dokument, das Sie rendern, pro parallelem Rendering | Nicht Ihre Sorge |
| PDF/A | pdf_variant in Ihrem eigenen Code |
pdf_variant in einem bezahlten Tarif, mit veraPDF an Beispieldokumenten geprüft |
| Agenten | Bauen Sie ein Tool darum | Der MCP-Server unten |
HTML, das für diese API geschrieben ist, rendert auch auf Ihrem eigenen WeasyPrint 70 mit den DejaVu-Schriften, Sie können also später umziehen.
MCP-Server und kostenloses Tool
Agenten rufen WeasyPrint über seinen eigenen MCP-Server unter
https://api.pagespool.com/mcp/weasyprint/ auf, mit dem Tool render_pdf. Es nimmt bis zu
256 KB HTML an und liefert einen Link zum PDF, der 15 Minuten funktioniert. Die
Einrichtung für jeden Client steht auf der Verbindungsseite und im
MCP-Leitfaden (auf Englisch).
Um ein Dokument zuerst zu testen, fügen Sie es in das kostenlose Tool ein, ohne Konto.
WeasyPrint ist eine Marke ihres Inhabers; pagespool ist mit ihm nicht verbunden.
FAQ
- Was kostet ein Rendering mit WeasyPrint?
- 1 Credit pro Rendering, unabhängig von der Seitenanzahl. Abgelehnte und fehlgeschlagene Aufrufe kosten nichts. Jedes Konto erhält 10 kostenlose Credits am Tag und der kostenlose Tarif 100 im Monat. Die Credits gelten für alle sieben Engines.
- Liefert das gehostete WeasyPrint PDF/A?
- Ja, in den bezahlten Tarifen. Setzen Sie pdf_variant auf pdf/a-2b oder pdf/a-3b. Ohne bezahlten Tarif erhält der Aufruf den Status 403 (feature_not_available) und kostet nichts.
- Welcher Header trägt den API-Schlüssel?
- Einer von drei: X-API-Key, Authorization: Bearer oder HTTP Basic mit dem Schlüssel als Passwort. Eine URL wie https://x:YOUR_KEY@ gefolgt vom API-Host sendet Basic.