Zum Inhalt springen

Anwendungsfall

HTML-zu-PDF-API

HTML senden, PDF erhalten, ohne Vorlage. Chromium rendert mit vollem CSS-Support, und das Objekt settings steuert Papier, Ränder, Kopf- und Fußzeile. Kommt dasselbe HTML immer wieder mit anderen Werten, wird es zur Vorlage, und Sie senden nur noch die Daten.

Kostenloser Plan mit 100 Einheiten im Monat, keine Kreditkarte

Echtes Browser-Rendering

Flexbox, Grid, Webfonts, @page-Regeln und Print-Stylesheets funktionieren wie in Chrome; keine Eigenheiten einer PDF-Bibliothek.

Kopf- und Fußzeilen

Kopf- und Fußzeilenvorlagen mit Seitenzahl und Seitenanzahl auf jeder Seite, dazu ein Rand je Seite des Blatts.

Jedes Papier

A4, Letter und die anderen üblichen Formate, Querformat oder eine eigene Breite und Höhe, etwa ein Etikett mit 100 × 150 mm.

Tailwind und Webfonts

settings.tailwind kompiliert die Tailwind-Klassen, die das Dokument verwendet, und Schriften laden über ein link-Tag wie im Browser.

Sicher gebaut

Unterressourcen laden nur über https von öffentlichen Hosts; private Netze und Metadaten-Endpunkte sind unerreichbar.

Test-Schlüssel

Test-Schlüssel rendern kostenlos (im Free-Plan mit kleinem Wasserzeichen); Integration und CI berühren Ihr Kontingent nie.

HTML mit einer Anfrage in PDF umwandeln

Shell
curl -X POST "https://api-eu.formfeed.dev/v1/renders?output=binary" \
  -H "Authorization: Bearer $FORMFEED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"html": "<h1>Hello</h1><p>From HTML to PDF.</p>", "settings": {"paper": {"format": "A4"}, "margin": {"top": "20mm", "bottom": "20mm"}}}' \
  -o hello.pdf

Vollständige Anfrage- und Antwortformate in der Doku.

Was Sie senden können

Das Dokument kommt als html, bis zu 5 MB. Stylesheets, Schriften und Bilder stehen im Dokument oder laden über HTTPS von öffentlichen Adressen, und gedruckt wird, wenn die Seite geladen ist, keine ihrer Anfragen mehr läuft und die Schriften bereit sind. Der Befehl oben fragt mit ?output=binary nach der Datei selbst; ohne das ist die Antwort JSON mit signiertem Download-Link, Seitenzahl und Einheiten.

Mit engine auf jinja2, liquid oder handlebars ist das HTML eine Vorlage für die data, die Sie mitsenden, mit allen Helfern für Geldbeträge, Daten und Codes. Ohne engine wird das HTML gedruckt, wie es ist.

POST /v1/rendersJSON
{
  "html": "<h1>Invoice {{ number }}</h1><p>Total: {{ total | money }}</p>",
  "engine": "liquid",
  "data": { "number": "2026-0042", "total": 3760.4 },
  "locale": "de-DE"
}

Papier, Ränder, Kopf- und Fußzeile

Was ein Druckdialog fragen würde, steht in settings: das Papier mit Namen oder mit Breite und Höhe, Hoch- oder Querformat, ein Rand je Seite und das HTML einer Kopf- und einer Fußzeile, die sich auf jeder Seite wiederholen.

POST /v1/rendersJSON
{
  "html": "<h1>Quarterly report</h1> …",
  "settings": {
    "paper": { "format": "A4", "landscape": true },
    "margin": { "top": "25mm", "right": "15mm", "bottom": "20mm", "left": "15mm" },
    "footer": {
      "height": "12mm",
      "html": "<div style=\"width:100%;text-align:center;font-size:8px\">Page <span class=\"pageNumber\"></span> of <span class=\"totalPages\"></span></div>"
    }
  }
}

Chromium druckt Kopf- und Fußzeile außerhalb der Seite, sie tragen deshalb ihre eigenen Inline-Styles, und pageNumber und totalPages werden auf jeder Seite ausgefüllt. Mit preferCssPageSize entscheidet stattdessen eine @page-Regel Ihres CSS über das Format.

Seiten, die spät fertig werden

JavaScript läuft, eine Seite, die ein Diagramm zeichnet oder Daten lädt, wird also gedruckt, wenn sie fertig ist: waitFor.selector wartet auf ein Element, und waitFor.delayMs fügt eine Pause von bis zu zehn Sekunden hinzu. Das Laden der Seite mit allem, was sie nachlädt, darf bis zu 30 Sekunden dauern. Eine Anfrage, auf die der Aufrufer nicht warten soll, geht mit "mode": "async" hinaus und meldet sich per Webhook.

Wenn dasselbe HTML immer wieder kommt: eine Vorlage

Das ganze Dokument zu senden, passt für einmalige Seiten. Für eine Rechnung oder einen Bericht, der tausendmal mit anderen Werten kommt, speichern Sie das HTML einmal als Vorlage: Die Anfrage schrumpft auf die Daten, das Layout hat Versionen, der Editor zeigt die Seiten, bevor etwas gesendet wird, und eine Änderung am Wortlaut ist kein Deployment. Eine HTML-Datei, die Sie schon haben, ist so, wie sie ist, eine Vorlage.

Eine Webseite, ein Bild, eine Office-Datei

Übergeben Sie url statt html, um eine öffentliche Seite zu drucken: URL zu PDF. Fragen Sie mit output nach png, jpg oder webp, und dasselbe HTML kommt als Bild zurück. Word-, Excel- und PowerPoint-Dateien werden ab dem Starter-Plan über POST /v1/pdf/convert zu PDF: Office-Umwandlung.

Was ein PDF kostet

Ein PDF mit bis zu fünf Seiten ist eine Einheit, und jede weiteren fünf Seiten kosten eine mehr; ein Bild ist eine Einheit. Der Free-Plan hat 100 Einheiten im Monat und verlangt keine Kreditkarte. Starter hat 3.000 Einheiten für 19 € im Monat. Renderings mit einem Test-Schlüssel kosten nichts, und ein fehlgeschlagenes Rendering wird nie gezählt. Alle Pläne stehen auf der Preisseite.

FAQ

Und URLs?
Statt html einfach url übergeben, um eine öffentliche Seite zu drucken. URL zu PDF sagt, was die Seite erfüllen muss und worin sich ein Screenshot von einem Druck unterscheidet.
Wie groß darf das HTML sein?
Bis zu 5 MB pro Anfrage; Bilder und Schriften holt der Renderer und cacht sie.
Welches CSS funktioniert im PDF?
Was Chromium druckt: Flexbox, Grid, @page, break-inside, Webfonts und Print-Stylesheets. Seitenumbrüche in Tabellen zeigt an gerenderten Dateien, was über Seiten hinweg hält und was nicht.
Läuft JavaScript?
Ja. Gedruckt wird, wenn die Seite geladen, das Netzwerk ruhig und die Schriften bereit sind, und waitFor fügt Bedingungen für Seiten hinzu, die später fertig werden.
Wird mein HTML gespeichert?
Die Datei bleibt für die Aufbewahrung Ihres Plans erhalten, oder kürzer mit expires_in. Die Anfrage selbst wird nach dem Rendering nicht aufbewahrt, es sei denn, ein Inhaber oder Admin schaltet für den Workspace Render-Anfragen aufbewahren ein: ab dem Starter-Plan für 24 Stunden, ab Pro für bis zu 7 Tage.
Lassen sich auch Word- oder Excel-Dateien umwandeln?
Ja, ab Starter: POST /v1/pdf/convert nimmt DOCX, XLSX, PPTX, OpenDocument, RTF und ältere Office-Dateien bis 20 MB an und liefert ein PDF-Rendering; der Upload wird nicht gespeichert. Siehe Office-Umwandlung.

Weitere Anwendungsfälle

Heute mit dem Rendern beginnen

Der kostenlose Plan enthält 100 Einheiten im Monat und kostenlose Testrenderings. Wechseln Sie den Plan, wenn Sie mehr brauchen.