---
seo_title: Anything-to-PDF API — Jede Datei in PDF | EnConvert
meta_desc: Konvertiere Word, Excel, PowerPoint, HTML, Markdown, EPUB und Bilder in PDF mit POST /v1/convert/anything-to-pdf — ein REST-API-Endpunkt für jede Datei zu PDF.
keywords: anything to pdf api, jede datei in pdf umwandeln api, docx in pdf api, word in pdf konvertieren api, bild in pdf api, html in pdf api, markdown in pdf api, dokumente in pdf umwandeln rest api
---

# 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](/de/docs/endpoints/documents-to-pdf/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](/de/docs/endpoints/web-pages/url-to-pdf). Das Markdown-Pendant, das jede Datei in sauberes Markdown verwandelt, findest du unter [anything-to-markdown](/de/docs/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`). |

<div class="alert alert-info">
<strong>Hinweis:</strong> Anders als bei den formatspezifischen PDF-Endpunkten wird die Seitengeometrie (benutzerdefinierte Seitengröße, Ränder, Ausrichtung, Kopf- und Fußzeilen) hier <em>nicht</em> angewendet, da das Eingabeformat automatisch erkannt und jeder Typ von einer anderen Engine gerendert wird. Nur <code>grayscale</code> wird an diesem Endpunkt berücksichtigt. Für die vollständige Seitensteuerung sende stattdessen HTML oder Markdown an <a href="/de/docs/endpoints/documents-to-pdf/html-to-pdf">html-to-pdf</a> oder markdown-to-pdf. Um eine live abrufbare URL in ein PDF umzuwandeln, verwende <a href="/de/docs/endpoints/web-pages/url-to-pdf">url-to-pdf</a>.
</div>

---

## 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](/de/docs/authentication). 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](/de/docs/endpoints/documents-to-pdf/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:

```json
{
    "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](/de/docs/anything-to-markdown) oder [den Ingest-Endpunkt](/de/docs/v2-ingest).

---

## 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`](/de/docs/anything-to-markdown) und [`/v2/ingest`](/de/docs/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)

```bash
curl -X POST https://api.enconvert.com/v1/convert/anything-to-pdf \
  -H "X-API-Key: sk_live_your_private_key" \
  -F "file=@quarterly-report.docx"
```

### Python (privater Schlüssel)

```python
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)

```javascript
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)

```php
$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](/de/docs/error-codes).

---

## 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](#supported-input-formats) |

---

## 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](#supported-input-formats).

### 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](/de/docs/endpoints/documents-to-pdf/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.
