Anything-to-PDF API#

Der Endpunkt POST /v1/convert/anything-to-pdf konvertiert nahezu jede hochgeladene Datei — Word, Excel, PowerPoint, OpenDocument, Apple Pages und Numbers, HTML, Markdown, reinen Text, EPUB, Bilder und SVG — in ein PDF. Er erkennt das Format der gesendeten Datei automatisch, leitet sie an die passende Rendering-Engine weiter und gibt ein einzelnes PDF zurück. Ein einziger Endpunkt ersetzt den gesamten formatspezifischen PDF-Stack: Du lädst eine Datei hoch und bekommst ein PDF zurück, ganz gleich, welchen Quelltyp sie hat.

Er ist die Superset-Variante der formatspezifischen PDF-Endpunkte in einem einzigen Aufruf (html-to-pdf, doc-to-pdf, excel-to-pdf und die übrigen) — greif zu diesen, wenn du den Eingabetyp bereits kennst und feingranulare Seitensteuerung möchtest, und greif zu diesem hier, wenn die Eingabe alles Mögliche sein kann. Dieser Endpunkt arbeitet ausschließlich dateibasiert; um eine live gerenderte Webseite in ein PDF umzuwandeln, verwende url-to-pdf. Das Markdown-Pendant, das jede Datei in sauberes Markdown verwandelt, findest du unter anything-to-markdown.


Endpunkt#

POST /v1/convert/anything-to-pdf

Content-Type: multipart/form-data

Ausgabeformat: PDF (.pdf, application/pdf). Der Eingabetyp wird automatisch anhand der Dateiendung des hochgeladenen Namens und seiner Magic Bytes erkannt — du gibst kein Eingabeformat an.


Unterstützte Eingabeformate#

Der Eingabetyp wird anhand der Dateiendung erkannt (und gegen die Magic Bytes der Datei geprüft). Dies sind alle Formate, die der Endpunkt akzeptiert:

Kategorie Formate Endungen Hinweise
Word DOCX, DOC .docx, .doc Über LibreOffice gerendert, wobei Stile, Tabellen und Layout erhalten bleiben.
Excel XLSX, XLS .xlsx, .xls Tabellenkalkulationen werden über LibreOffice in ein paginiertes PDF gerendert.
PowerPoint PPTX, PPT .pptx, .ppt Eine PDF-Seite pro Folie, über LibreOffice.
OpenDocument ODT, ODS, ODP, OTS .odt, .ods, .odp, .ots Text-, Tabellen-, Präsentations- und Tabellenvorlagendokumente, über LibreOffice.
Apple iWork Pages, Numbers .pages, .numbers Apple-Pages- und -Numbers-Dokumente, über LibreOffice.
Rich Text / Daten RTF, CSV .rtf, .csv RTF-Dokumente und CSV-Tabellen werden über LibreOffice gerendert.
Web / Markup HTML, XHTML .html, .htm, .xhtml Mit WeasyPrint gerendert, wobei das eigene CSS des Dokuments berücksichtigt wird.
Markdown Markdown .md, .markdown, .mdown, .mkd In ein gestyltes PDF mit Überschriften, Tabellen und Code-Blöcken gerendert.
Reiner Text Text .txt, .text In einem Monospace-Layout gerendert, das Leerräume erhält.
E-Books EPUB .epub Kapitel werden in Lesereihenfolge (Spine) in ein Text-PDF konvertiert.
Bilder PNG, JPEG, GIF, BMP, TIFF, WebP, HEIC .png, .jpg, .jpeg, .gif, .bmp, .tiff, .tif, .webp, .heic, .heif Jedes Bild wird zu einem einseitigen PDF; Transparenz wird auf Weiß reduziert.
Vektor SVG .svg Als Vektor (nicht gerastert) mit CairoSVG gerendert.
PDF PDF .pdf Wird unverändert angenommen und zurückgegeben — nützlich für die Graustufen-Normalisierung (siehe pdf_options).
Hinweis: Anders als bei den formatspezifischen PDF-Endpunkten wird die Seitengeometrie (benutzerdefinierte Seitengröße, Ränder, Ausrichtung, Kopf- und Fußzeilen) hier nicht angewendet, da das Eingabeformat automatisch erkannt und jeder Typ von einer anderen Engine gerendert wird. Nur grayscale wird an diesem Endpunkt berücksichtigt. Für die vollständige Seitensteuerung sende stattdessen HTML oder Markdown an html-to-pdf oder markdown-to-pdf. Um eine live abrufbare URL in ein PDF umzuwandeln, verwende url-to-pdf.

Authentifizierung#

Dieser Endpunkt unterstützt sowohl die Authentifizierung per privatem als auch per öffentlichem Schlüssel.

Privater Schlüssel#

Füge deinen geheimen Schlüssel im Header X-API-Key ein. Verwende dies für Server-zu-Server-Aufrufe, bei denen der Schlüssel niemals dem Client offengelegt wird.

X-API-Key: sk_live_your_private_key

Öffentlicher Schlüssel mit JWT#

Erzeuge für die clientseitige Nutzung zunächst ein JWT-Token mit deinem öffentlichen Schlüssel und übergib es anschließend als Bearer-Token.

Schritt 1 -- Token abrufen:

POST /v1/auth/token
X-API-Key: pk_live_your_public_key

Schritt 2 -- Token verwenden:

Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

Den vollständigen Ablauf, einschließlich Domain-Sperrung und Token-Erneuerung, findest du im Authentifizierungsleitfaden. Jeder API-Schlüssel führt eine Allowlist erlaubter Endpunkte — steht /v1/convert/anything-to-pdf nicht auf der Liste des Schlüssels, wird die Anfrage mit 403 abgelehnt.


Anfrageparameter#

Sende die Datei als multipart/form-data. Das Dokument gehört in das Feld file; die übrigen sind optionale Formularfelder.

Parameter Typ Erforderlich Standard Beschreibung
file file Ja -- Die zu konvertierende Dokument-, Bild- oder Markup-Datei. Ihre Endung muss eines der oben unterstützten Eingabeformate sein.
output_filename string Nein Eingabename Benutzerdefinierter Name für die Ausgabedatei. Die Endung .pdf wird automatisch hinzugefügt.
direct_download boolean Nein true Wird aus Gründen der Anfrageform-Parität mit den anderen Konvertierungsendpunkten akzeptiert.
job_id string Nein -- Vom Client bereitgestellte Job-ID zur Wiederherstellung nach Timeouts. Überschreitet eine synchrone Konvertierung die Timeout-Grenzen des Reverse-Proxys, rufe GET /v1/convert/status/{job_id} per Polling ab, um das Ergebnis zu erhalten.
pdf_options string Nein null JSON-String mit PDF-Optionen. Nur grayscale wird an diesem Endpunkt berücksichtigt — siehe unten.

PDF-Optionen#

Übergib sie als JSON-String im Formularfeld pdf_options. Da das Eingabeformat automatisch erkannt und jedes Format von einer anderen Engine gerendert wird, wird hier nur grayscale einheitlich angewendet.

Parameter Typ Standard Beschreibung
grayscale boolean false Konvertiert das Ausgabe-PDF per Ghostscript-Nachbearbeitung in Graustufen. Gilt für jeden Eingabetyp, einschließlich eines bereits als PDF hochgeladenen Uploads.

Für eine benutzerdefinierte Seitengröße, Ränder, Ausrichtung, Kopf- oder Fußzeilen konvertiere HTML oder Markdown über die formatspezifischen Endpunkte html-to-pdf oder markdown-to-pdf, die das vollständige pdf_options-Schema akzeptieren.


Antwort#

Die Konvertierung läuft in-process, die resultierende .pdf-Datei wird gespeichert, und der Endpunkt gibt anschließend einen JSON-Body mit einer vorsignierten Download-URL zurück:

{
    "presigned_url": "https://spaces.example.com/...signed...",
    "object_key": "env/files/{project_id}/anything-to-pdf/report_20260714_101530123.pdf",
    "filename": "report_20260714_101530123.pdf",
    "file_size": 51240,
    "conversion_time_seconds": 2.1,
    "job_id": null
}

Dieselben Werte werden in Antwort-Headern gespiegelt (X-Object-Key, X-File-Size, X-Conversion-Time, X-Filename), sodass du sie lesen kannst, ohne den Body zu parsen. Lade das PDF von presigned_url herunter — der Link ist nur kurz gültig.


Wie jedes Format konvertiert wird#

Jedes Format wird in ein PDF normalisiert, sodass du unabhängig vom Quelltyp eine einheitliche Ausgabe erhältst.

  • Word / Excel / PowerPoint — Mit LibreOffice im Headless-Modus gerendert, wobei Stile, Tabellen und Layout erhalten bleiben; Präsentationen erzeugen eine Seite pro Folie. Ältere Binärformate (.doc, .xls, .ppt) werden von derselben Engine verarbeitet.
  • OpenDocument, Apple Pages / Numbers, RTF, CSV — Ebenfalls über LibreOffice gerendert, sodass ODF-Dokumente, iWork-Exporte, Rich Text und CSV-Tabellen alle sauber paginieren.
  • HTML / XHTML — Mit WeasyPrint gerendert, das das eigene CSS des Dokuments berücksichtigt. Über URL referenzierte externe Ressourcen werden möglicherweise nicht aufgelöst — binde dein CSS inline ein und kodiere Bilder als Base64, um die besten Ergebnisse zu erzielen.
  • Markdown — In HTML umgewandelt (Überschriften, GitHub-Flavored-Tabellen, Code-Blöcke) und mit WeasyPrint in ein sauberes, gestyltes PDF gerendert.
  • Reiner Text — In einem Monospace-Layout gerendert, das Leerräume erhält und lange Zeilen umbricht, sodass Logs und Code lesbar bleiben.
  • EPUB — Inhaltsdokumente werden in Spine-Reihenfolge (Lesereihenfolge) gelesen und Kapitel für Kapitel in ein Text-PDF gerendert; das Navigationsdokument wird übersprungen.
  • Bilder (PNG, JPEG, GIF, BMP, TIFF, WebP, HEIC) — Jedes Bild wird über Pillow zu einem einseitigen PDF. Transparenz wird auf einen weißen Hintergrund reduziert, und bei einem Bild mit mehreren Frames (animiertes GIF, mehrseitiges TIFF) wird nur der erste Frame verwendet.
  • SVG — Als echte Vektorgrafik mit CairoSVG gerendert, sodass das Ergebnis bei jedem Zoom gestochen scharf bleibt.
  • PDF — Ein hochgeladenes PDF wird validiert und unverändert zurückgegeben, was diesen Endpunkt zu einer bequemen Möglichkeit macht, ein bestehendes PDF in Graustufen zu normalisieren.

Ausgabeformat#

Das Ergebnis ist ein standardmäßiges PDF (application/pdf):

  • Dokumente behalten ihre Paginierung, Überschriften, Tabellen und Formatierung aus der Quell-Rendering-Engine bei.
  • Bilder erzeugen eine einzelne Seite in der Größe des Bildes; SVG bleibt vektorbasiert.
  • Graustufen — wenn pdf_options.grayscale auf true steht, wird das fertige PDF über einen Ghostscript-Nachbearbeitungsdurchlauf entsättigt.

Wenn du sauberes Markdown statt eines PDFs benötigst — zum Beispiel, um eine LLM- oder RAG-Pipeline zu speisen — sende dieselbe Datei stattdessen an anything-to-markdown oder den Ingest-Endpunkt.


Unterstützte Formate nach Endpunkt#

Die Datei-Upload-Endpunkte teilen sich dieselbe automatische Formaterkennung, zielen aber auf unterschiedliche Ausgaben ab. Dieser Endpunkt (anything-to-pdf) akzeptiert die breiteste Auswahl — alle 36 Formate unten. anything-to-markdown und /v2/ingest akzeptieren jeweils dieselben 22 Dokumentformate (Bilder, SVG und die Apple-/OTS-Formate sind ausschließlich für PDF verfügbar), und /v2/ingest akzeptiert zusätzlich Web-Quellen — eine URL-Liste, eine Sitemap oder einen Crawl — nicht nur Dateien.

Kategorie Endungen anything-to-pdf anything-to-markdown /v2/ingest
PDF .pdf
Word .docx, .doc
Excel .xlsx, .xls
PowerPoint .pptx, .ppt
CSV .csv
Rich Text .rtf
OpenDocument .odt, .ods, .odp
ODF-Vorlage .ots
Apple iWork .pages, .numbers
Web / Markup .html, .htm, .xhtml
Markdown / Text .md, .markdown, .mdown, .mkd, .txt, .text
E-Books .epub
Bilder .png, .jpg, .jpeg, .gif, .bmp, .tiff, .tif, .webp, .heic, .heif
Vektor .svg

Ein ✓ bedeutet, dass der Endpunkt dieses Format als Datei-Upload akzeptiert; ein — bedeutet, dass er es nicht tut. Bilder und SVG werden hier in PDF konvertiert, von den Markdown-Ausgabe-Endpunkten jedoch abgelehnt (Bild-OCR ist eine separate Pipeline). Die Größenbeschränkungen pro Datei sind tarifabhängig (Free: 5 MB) über alle drei Endpunkte hinweg.


Code-Beispiele#

curl (privater Schlüssel)#

curl -X POST https://api.enconvert.com/v1/convert/anything-to-pdf \
  -H "X-API-Key: sk_live_your_private_key" \
  -F "[email protected]"

Python (privater Schlüssel)#

import requests

with open("quarterly-report.docx", "rb") as f:
    response = requests.post(
        "https://api.enconvert.com/v1/convert/anything-to-pdf",
        headers={"X-API-Key": "sk_live_your_private_key"},
        files={"file": ("quarterly-report.docx", f)},
    )

response.raise_for_status()
result = response.json()

# Download the PDF from the pre-signed URL.
pdf = requests.get(result["presigned_url"]).content
with open("quarterly-report.pdf", "wb") as out:
    out.write(pdf)

Node.js (privater Schlüssel)#

import { readFile, writeFile } from "node:fs/promises";

const form = new FormData();
form.append(
    "file",
    new Blob([await readFile("quarterly-report.docx")]),
    "quarterly-report.docx"
);

const response = await fetch(
    "https://api.enconvert.com/v1/convert/anything-to-pdf",
    { method: "POST", headers: { "X-API-Key": "sk_live_your_private_key" }, body: form }
);

const result = await response.json();
const pdf = await fetch(result.presigned_url).then((r) => r.arrayBuffer());
await writeFile("quarterly-report.pdf", Buffer.from(pdf));

PHP (privater Schlüssel)#

$ch = curl_init("https://api.enconvert.com/v1/convert/anything-to-pdf");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["X-API-Key: sk_live_your_private_key"],
    CURLOPT_POSTFIELDS => [
        "file" => new CURLFile("quarterly-report.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "quarterly-report.docx"),
    ],
]);

$data = json_decode(curl_exec($ch), true);
curl_close($ch);

echo $data["presigned_url"];

Fehlerantworten#

Status Bedingung
400 Bad Request Nicht unterstützter Dateityp, eine leere Datei oder ein beschädigtes/unlesbares Dokument (z. B. ein ungültiges Bild oder ein fehlerhaftes EPUB).
400 Bad Request Die Bytes der Datei stimmen nicht mit ihrer angegebenen Endung überein (Magic-Byte-Konflikt).
400 Bad Request Ungültiges pdf_options-JSON.
401 Unauthorized Fehlender oder ungültiger API-Schlüssel / JWT-Token.
402 Payment Required Monatliches Konvertierungslimit oder Speicherlimit erreicht.
403 Forbidden /v1/convert/anything-to-pdf gehört nicht zu den erlaubten Endpunkten des API-Schlüssels.
413 Payload Too Large Der Upload überschreitet das Größenlimit pro Datei deines Tarifs.
500 Internal Server Error Die Konvertierung ist unerwartet fehlgeschlagen.

Die vollständige Referenz der Statuscodes findest du im Leitfaden zu Fehlercodes.


Limits#

Limit Wert
Maximale Upload-Größe Tarifabhängig (Free: 5 MB)
Monatliche Konvertierungen Tarifabhängig (Free: 100)
Dateiaufbewahrung Tarifabhängig (Free: 1 Stunde)
Seitengeometrie-Optionen An diesem Endpunkt nicht angewendet (nur grayscale)
Unterstützte Eingabeformate Siehe die Tabelle Unterstützte Eingabeformate

Häufig gestellte Fragen#

Wie konvertiere ich eine beliebige Datei mit einer API in ein PDF?#

Sende eine POST-Anfrage an /v1/convert/anything-to-pdf als multipart/form-data mit deiner Datei im Feld file und deinem Schlüssel im Header X-API-Key. Der Endpunkt erkennt das Format automatisch, rendert es in ein PDF und gibt JSON mit einer presigned_url zum fertigen .pdf zurück. Du musst ihm den Eingabetyp nicht mitteilen — die Endung und die Magic Bytes entscheiden.

Welche Dateiformate kann ich in PDF konvertieren?#

Word (.docx, .doc), Excel (.xlsx, .xls), PowerPoint (.pptx, .ppt), OpenDocument (.odt, .ods, .odp, .ots), Apple Pages und Numbers, RTF, CSV, HTML/XHTML, Markdown, reiner Text, EPUB, Bilder (.png, .jpg, .jpeg, .gif, .bmp, .tiff, .webp, .heic) und SVG. Ein bestehendes PDF wird angenommen und unverändert zurückgegeben. Die vollständige Liste mit Hinweisen pro Format findest du in der Tabelle Unterstützte Eingabeformate.

Kann ich Word, Excel oder PowerPoint über die API in PDF konvertieren?#

Ja. Office-Dokumente — moderne (.docx, .xlsx, .pptx) und ältere (.doc, .xls, .ppt) — werden mit LibreOffice gerendert, wobei Stile, Tabellen und Layout erhalten bleiben, bei Präsentationen mit einer Seite pro Folie. Lade die Datei hoch und du bekommst das PDF zurück.

Wie konvertiere ich ein Bild wie PNG, JPEG oder HEIC in ein PDF?#

Lade es an denselben Endpunkt hoch. Jedes Bild wird zu einem einseitigen PDF, wobei Transparenz auf einen weißen Hintergrund reduziert wird; auch iPhone-.heic/.heif-Fotos und .svg-Vektoren werden unterstützt. Bei einem Bild mit mehreren Frames (animiertes GIF oder mehrseitiges TIFF) wird der erste Frame verwendet.

Kann ich eine benutzerdefinierte Seitengröße, Ränder oder Kopfzeilen für das PDF festlegen?#

Nicht an diesem Endpunkt — nur grayscale wird berücksichtigt, da das Eingabeformat automatisch erkannt wird und jeder Typ eine andere Rendering-Engine verwendet. Für die vollständige Seitensteuerung (Seitengröße, Ränder, Ausrichtung, Kopf- und Fußzeilen) sende HTML oder Markdown an die Endpunkte html-to-pdf oder markdown-to-pdf, die das vollständige pdf_options-Schema akzeptieren.

Wie unterscheidet sich das von den Endpunkten doc-to-pdf oder html-to-pdf?#

Die formatspezifischen Endpunkte akzeptieren jeweils einen Eingabetyp und stellen vollständige Seitengeometrie-Optionen bereit; anything-to-pdf nimmt sie alle hinter einem einzigen Aufruf an und erkennt das Format automatisch, was ideal ist, wenn die Eingabe alles Mögliche sein kann. Verwende einen spezifischen Endpunkt, wenn du den Typ kennst und Seitensteuerung möchtest; verwende diesen hier, wenn du einen einzigen Upload-Weg für viele Formate möchtest.