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.