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 mitpage_1.jpeg,page_2.jpegusw. - 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.