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)#

{
    "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#

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#

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#

$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#

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.