Zum Inhalt springen
Tutorial

Generieren Sie PDFs aus HTML und Markdown mit einer REST-API

| 6 min read

Zwei POST-Anfragen verwandeln HTML oder Markdown in herunterladbare PDFs. Kein Puppenspieler, kein Chromium, keine 500-MB-Abhängigkeit. Rechnungen, Berichte und Quittungen in weniger als 1 Sekunde.

Printed document pages on a desk
Photo by Bank Phrom on Unsplash

Ihre App generiert Rechnungen. Sie haben die HTML-Vorlage. Jetzt müssen Sie es in ein verwandeln herunterladbares PDF. Der Standardansatz: Puppeteer installieren, eine Headless-Chromium-Instanz starten, anrufen page.pdf(). Das sind 300–500 MB an Abhängigkeiten für eine Druckfunktion.

In der Produktion wird es noch schlimmer. Chromium verliert unter Last Speicherverluste. Docker-Images werden über 1 GB groß. Kaltstarts dauern 3-8 Sekunden. Am Ende pflegen Sie einen Browser-Prozesspool für etwas Das sollte ein einzelner Funktionsaufruf sein.

Es gibt einen kürzeren Weg. Senden Sie Ihren HTML-Code an eine API und erhalten Sie ein PDF zurück.

HTML in PDF in einer POST-Anfrage

Der /v1/pdf/from-html Der Endpunkt akzeptiert eine HTML-Zeichenfolge und gibt ein PDF zurück. Keine Browser-Binärdatei, keine Abhängigkeiten, keine Konfiguration.

curl -X POST https://api.botoi.com/v1/pdf/from-html \\
  -H "Content-Type: application/json" \\
  -d '{
    "html": "<h1>Invoice #1042</h1><p>Amount due: $2,450.00</p>"
  }'

Antwort:

{
  "success": true,
  "data": {
    "url": "https://api.botoi.com/pdfs/f7a2c1e8.pdf",
    "size_bytes": 24576,
    "pages": 1
  }
}

Der url Das Feld verweist auf das generierte PDF. Laden Sie es herunter, leiten Sie Ihren Benutzer dorthin weiter, oder speichern Sie es in Ihrem eigenen S3-Bucket. Die API übernimmt das Rendern, Paginieren und Einbetten von Schriftarten.

Markdown auf PDF in einer POST-Anfrage

Nicht jedes Dokument beginnt als HTML. Berichte, Änderungsprotokolle und Dokumentationen leben oft als Markdown. Der /v1/pdf/from-markdown Endpoint konvertiert Markdown direkt in ein formatiertes PDF.

Antwort:

Tabellen, Überschriften, fetter Text, Codeblöcke und Listen werden alle korrekt dargestellt. Die API gilt sauber typografische Standardeinstellungen, sodass die Ausgabe ohne benutzerdefiniertes CSS ansehnlich aussieht.

Praxisbeispiel: Rechnungserstellung

Eine realistische Rechnung benötigt einen Firmenkopf, eine Rechnungsadresse, eine Einzelpostentabelle, eine Steuerberechnung, und Zahlungsbedingungen. Hier ist eine vollständige Rechnung, die als ein API-Aufruf gesendet wird:

Mit dieser einzigen Anfrage wird ein professionelles Rechnungs-PDF mit dem Briefkopf von Cascade Software erstellt. vier Einzelposten im Gesamtwert von 2.257,00 $, 8,5 % Umsatzsteuer von 191,85 $ und eine Gesamtsumme von 2.448,85 $. Das CSS im <style> Das Tag steuert Schriftarten, Abstände, Tabellenränder usw fette Gesamtzeile. Sie können jedes vom Browser unterstützte CSS verwenden, einschließlich Flexbox, Grid und @page Regeln für Ränder und Seitengröße.

Praxisbeispiel: Quartalsbericht von Markdown

Berichte passen hervorragend zu Markdown. Produktmanager, Analysten und Betriebsteams schreiben bereits in Markdown. Die Konvertierung in PDF zur E-Mail-Verteilung oder Archivierung ist ein API-Aufruf:

Die API rendert die Tabellen, Überschriften, fetten Text und die nummerierte Liste in ein sauberes PDF. Nein HTML-Zwischenschritt auf Ihrer Seite. Übergeben Sie den Markdown-String aus Ihrer Datenbank, einem Git Repository oder einen Notion-Export.

Praxisbeispiel: Beleggenerierung in Express

Hier ist eine Express-Route, die bei Bedarf eine PDF-Quittung generiert, wenn ein Benutzer eine anfordert für eine vergangene Bestellung:

Der buildReceiptHtml Die Funktion übernimmt Bestelldaten aus Ihrer Datenbank und produziert eine gestaltete HTML-Zeichenfolge. Die Route sendet es an die Botoi-API und gibt die PDF-URL an die zurück Kunde. Kein Puppenspieler. Keine Dateisystemoperationen. Keine temporären Verzeichnisse.

Gleiches Muster in Hono

Wenn Sie Cloudflare Workers oder Bun verwenden, ist die Hono-Version fast identisch:

Der Hauptunterschied: Hono greift über auf Umgebungsvariablen zu c.env anstatt process.env. Alles andere bleibt gleich. Ein Abrufaufruf, eine JSON-Antwort, eine PDF-URL.

Vergleich: API vs. Puppeteer vs. wkhtmltopdf vs. Prince

Vier gängige Ansätze zur HTML-zu-PDF-Konvertierung im Vergleich dazu, worauf es in der Produktion ankommt:

Puppenspielerin gibt Ihnen die volle Kontrolle über den Browser, ist jedoch mit hohen Betriebskosten verbunden. Sie führen Chromium auf Ihrem Server aus, verwalten Speicherlimits und patchen die Sicherheit Schwachstellen in der Browser-Binärdatei. Funktioniert gut, wenn Sie eine JavaScript-Ausführung oder ein Cookie benötigen Injektion oder authentifiziertes Seitenrendering.

wkhtmltopdf ist leichter als Puppeteer, verwendet aber das veraltete QtWebKit Motor. Die CSS-Unterstützung bleibt auf dem Niveau von 2015 hängen. Flexbox und Grid funktionieren nicht. Das Projekt ist archiviert auf GitHub ohne aktive Betreuer.

Prince XML Erzeugt Druckausgaben in höchster Qualität mit vollständigen CSS-Paged-Medien Unterstützung. Der Kompromiss: eine Lizenzgebühr von 3.800 US-Dollar pro Server. Das macht für die Veröffentlichung Sinn Workflows, nicht zur Rechnungserstellung in einer SaaS-App.

Der API-Ansatz gewinnt, wenn Sie PDFs aus Vorlagen benötigen, die Sie steuern (Rechnungen, Quittungen, Berichte, Verträge) und müssen keine beliebigen authentifizierten Seiten rendern. Null Einrichtung, keine Wartung, vorhersehbare Latenz.

Wichtige Punkte

  • Zwei Endpunkte, zwei Eingabeformate. /v1/pdf/from-html für Vollständiges HTML mit CSS. /v1/pdf/from-markdown für Markdown-Inhalte.
  • Keine serverseitigen Abhängigkeiten. Kein Puppenspieler, kein Chromium, kein wkhtmltopdf binär. Ein HTTP-Aufruf aus einer beliebigen Sprache.
  • Volle CSS-Unterstützung. Inline-Stile, Stil-Tags, Flexbox, Raster, Google Fonts, und @page Medienabfragen funktionieren alle.
  • Kostenloses Kontingent verfügbar. 5 Anfragen pro Minute ohne API-Schlüssel. Bezahlte Pläne Beginnen Sie bei 9 $/Monat für Produktions-Workloads.
  • Häufige Anwendungsfälle. Rechnungen, Quittungen, Berichte, Verträge, Dokumentationen Exporte und E-Mail-Anhänge.

Überprüfen Sie die API Dokumente für die vollständige Parameterreferenz, einschließlich Seitengröße, Ränder und Kopf-/Fußzeile Konfiguration.

FAQ

Wie erstelle ich programmgesteuert ein PDF aus HTML?
Senden Sie eine POST-Anfrage an https://api.botoi.com/v1/pdf/from-html mit einem JSON-Text, der Ihre HTML-Zeichenfolge enthält. Die API gibt ein Base64-kodiertes PDF oder eine Download-URL zurück. Keine Browser-Binärdatei, Headless-Instanz oder serverseitige Abhängigkeit erforderlich.
Kann ich Markdown mit dieser API in PDF konvertieren?
Ja. Senden Sie eine POST-Anfrage mit Ihrer Markdown-Zeichenfolge an https://api.botoi.com/v1/pdf/from-markdown. Die API rendert den Markdown intern in formatiertes HTML und gibt ein PDF zurück. Unterstützt Überschriften, Tabellen, Codeblöcke und Listen.
Unterstützt die API CSS-Stil in der HTML-Eingabe?
Ja. Sie können Inline-Stile, Stil-Tags und vollständiges CSS in Ihren HTML-Code einbinden. Die Rendering-Engine unterstützt Flexbox, Raster, benutzerdefinierte Schriftarten über Google Fonts-Links und druckspezifische Medienabfragen wie @page für Ränder und Seitengröße.
Ist die PDF-Generierungs-API kostenlos?
Der anonyme Zugriff ermöglicht 5 Anfragen pro Minute mit IP-basierter Ratenbegrenzung. Kein API-Schlüssel oder Anmeldung erforderlich. Bezahlte Pläne beginnen bei 9 $/Monat und heben die Tarifbegrenzung für Produktionsarbeitslasten wie Rechnungserstellung oder Stapelberichte auf.
Wie schneidet die API bei der PDF-Generierung im Vergleich zu Puppeteer ab?
Puppeteer erfordert die Installation von Chromium (300–500 MB), die Verwaltung von Browserinstanzen, den Umgang mit Speicherlecks und die Aufrechterhaltung der Versionskompatibilität. Die Botoi-API ist ein einzelner HTTP-Aufruf ohne Infrastruktur. Die Einrichtung dauert Sekunden statt Stunden. Für die meisten PDF-Anwendungsfälle (Rechnungen, Berichte, Quittungen) deckt die API alles ab, was Sie benötigen, ohne dass es zu einem betrieblichen Mehraufwand kommt.

Starte mit botoi zu entwickeln

150+ API-Endpunkte für Abfragen, Textverarbeitung, Bildgenerierung und Entwickler-Tools. Kostenloser Tarif, keine Kreditkarte nötig.