---
seo_title: PDF zu JPEG API: PDF-Seiten als Bilder rendern | EnConvert
meta_desc: Wandle PDF-Seiten mit POST /v1/convert/pdf-to-jpeg in JPEG-Bilder um. Rendert mit 144 DPI; mehrseitige PDFs liefern ein ZIP mit einem JPEG pro Seite.
keywords: pdf in jpg umwandeln api, pdf zu jpeg api, pdf seiten als bild rendern, pdf zu jpg konverter api, pdf seite in bild rest api, pdf zu jpeg zip api, pdf bilder extrahieren api, mehrseitige pdf in bilder umwandeln
---

# PDF zu JPEG API

Wandle ein PDF mit dem Endpunkt `POST /v1/convert/pdf-to-jpeg` in JPEG-Bilder um: Er rendert jede PDF-Seite als Rasterbild. Einseitige PDFs liefern direkt eine JPEG-Datei; mehrseitige PDFs liefern ein ZIP-Archiv mit einem JPEG pro Seite. Die Antwort liefert standardmäßig rohe Datei-Bytes oder, wenn `direct_download=false` gesetzt ist, JSON-Metadaten mit einer presigned Download-URL.

---

## Endpunkt

```
POST /v1/convert/pdf-to-jpeg
```

**Content-Type:** `multipart/form-data`

**Akzeptierte Eingabe:** `.pdf`-Dateien

**Ausgabeformat:** `.jpeg` (`image/jpeg`) für einseitige PDFs, `.zip` (`application/zip`) für mehrseitige PDFs

---

## Authentifizierung

Erfordert entweder einen privaten API-Schlüssel oder ein JWT-Token von einem öffentlichen Schlüssel.

```
X-API-Key: sk_your_private_key
```

Oder:

```
Authorization: Bearer <jwt_token>
```

---

## Anfrageparameter

| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|-----------|------|----------|---------|-------------|
| `file` | Datei | Ja | -- | Die zu konvertierende `.pdf`-Datei. |
| `output_filename` | `string` | Nein | Eingabedateiname | Benutzerdefinierter Ausgabedateiname. Die Endung `.jpeg` oder `.zip` wird automatisch hinzugefügt. |
| `direct_download` | `boolean` | Nein | `true` | Bei `true` werden rohe Datei-Bytes zurückgegeben. Bei `false` werden JSON-Metadaten mit einer presigned Download-URL zurückgegeben. |

---

## Details zur Konvertierung

- Verwendet **PyMuPDF**, um PDF-Seiten mit 2-facher Auflösung (144 DPI) als Rasterbilder zu rendern
- Verwendet **Pillow** zur JPEG-Kodierung mit maximaler Qualität
- Transparenz wird vor einem weißen Hintergrund geglättet (JPEG unterstützt keinen Alphakanal)
- Einseitige PDFs liefern direkt eine `.jpeg`-Datei
- Mehrseitige PDFs liefern ein `.zip`-Archiv mit `page_1.jpeg`, `page_2.jpeg` usw.
- Das Ausgabeformat wird automatisch anhand der Seitenanzahl bestimmt

---

## Antwort

### Direkter Download (`direct_download=true`, Standard)

**Einseitiges PDF:**

```
HTTP 200 OK
Content-Type: image/jpeg
Content-Disposition: inline; filename="document_20260405_123456789.jpeg"
```

Gibt rohe JPEG-Bild-Bytes zurück.

**Mehrseitiges PDF:**

```
HTTP 200 OK
Content-Type: application/zip
Content-Disposition: inline; filename="document_20260405_123456789.zip"
```

Gibt ein ZIP-Archiv mit einem JPEG pro Seite zurück.

### Metadaten-Antwort (`direct_download=false`)

```json
{
    "presigned_url": "https://spaces.example.com/...",
    "object_key": "env/files/{project_id}/pdf-to-jpeg/document_20260405_123456789.jpeg",
    "filename": "document_20260405_123456789.jpeg",
    "file_size": 45678,
    "conversion_time_seconds": 1.2
}
```

---

## Codebeispiele

### Python

```python
import requests

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

# Check if response is a ZIP (multi-page) or JPEG (single-page)
content_type = response.headers.get("Content-Type", "")
if "zip" in content_type:
    with open("document_pages.zip", "wb") as out:
        out.write(response.content)
else:
    with open("document_20260405_123456789.jpeg", "wb") as out:
        out.write(response.content)
```

### Node.js

```javascript
const form = new FormData();
form.append("file", fs.createReadStream("document.pdf"));

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

const contentType = response.headers.get("content-type");
const buffer = Buffer.from(await response.arrayBuffer());

if (contentType.includes("zip")) {
    fs.writeFileSync("document_pages.zip", buffer);
} else {
    fs.writeFileSync("document_20260405_123456789.jpeg", buffer);
}
```

### PHP

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/pdf-to-jpeg");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["X-API-Key: sk_your_private_key"],
    CURLOPT_POSTFIELDS => ["file" => new CURLFile("document.pdf")]
]);
$output = curl_exec($ch);
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
curl_close($ch);

if (str_contains($contentType, "zip")) {
    file_put_contents("document_pages.zip", $output);
} else {
    file_put_contents("document_20260405_123456789.jpeg", $output);
}
```

### Go

```go
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("file", "document.pdf")
file, _ := os.Open("document.pdf")
io.Copy(part, file)
writer.Close()

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/pdf-to-jpeg", body)
req.Header.Set("Content-Type", writer.FormDataContentType())
req.Header.Set("X-API-Key", "sk_your_private_key")
resp, _ := http.DefaultClient.Do(req)
```

---

## Fehlerantworten

| Status | Bedingung |
|--------|-----------|
| `400 Bad Request` | Datei ist keine `.pdf`-Datei |
| `400 Bad Request` | PDF hat keine Seiten |
| `400 Bad Request` | Bildkonvertierung fehlgeschlagen (beschädigtes oder nicht unterstütztes PDF) |
| `401 Unauthorized` | Fehlender oder ungültiger API-Schlüssel / JWT-Token |
| `402 Payment Required` | Monatliches Ops-Kontingent aufgebraucht |
| `402 Payment Required` | Speicherlimit erreicht |
| `413 Payload Too Large` | Datei überschreitet die maximale Dateigröße des Plans |

---

## Limits

| Limit | Wert |
|-------|-------|
| Maximale Dateigröße | Abhängig vom Plan (Founding: 5 MB) |
| Renderauflösung | 144 DPI (2-fache Skalierung) |
| Ausgabequalität | Maximum (JPEG-Qualität 100) |
| Monatliche Konvertierungen | Abhängig vom Plan |

---

## Häufig gestellte Fragen

### Wie konvertiere ich ein PDF mit einer REST-API in JPEG-Bilder?

Sende eine `multipart/form-data`-POST-Anfrage an `/v1/convert/pdf-to-jpeg` mit der `.pdf`-Datei im Feld `file`, authentifiziert über `X-API-Key` oder ein Bearer-JWT. Du erhältst standardmäßig rohe Datei-Bytes zurück, oder setze `direct_download=false`, um JSON mit einer presigned Download-URL zu erhalten.

### Wie behandelt die API mehrseitige PDFs?

Einseitige PDFs liefern direkt eine `.jpeg`-Datei, während mehrseitige PDFs ein `.zip`-Archiv mit `page_1.jpeg`, `page_2.jpeg` und so weiter liefern. Das Ausgabeformat wird automatisch anhand der Seitenanzahl bestimmt. Prüfe beim Speichern der Antwort daher den `Content-Type`-Header (`image/jpeg` vs. `application/zip`).

### Mit welcher Auflösung werden PDF-Seiten gerendert?

Seiten werden mit PyMuPDF in 2-facher Auflösung (144 DPI) gerendert und als JPEG mit maximaler Qualität (100) kodiert. Keine der beiden Einstellungen ist konfigurierbar.

### Bleibt bei der Konvertierung von PDF zu JPEG die Transparenz erhalten?

Nein. JPEG unterstützt keinen Alphakanal, daher wird die Transparenz vor einem weißen Hintergrund geglättet.

### Warum liefert der PDF-zu-JPEG-Endpunkt einen 400-Fehler?

`400 Bad Request` wird zurückgegeben, wenn die Datei kein `.pdf` ist, wenn das PDF keine Seiten hat oder wenn die Konvertierung fehlschlägt, weil das PDF beschädigt oder nicht unterstützt wird.
