API da PDF a JPEG#

Converti un PDF in immagini JPEG con l'endpoint POST /v1/convert/pdf-to-jpeg, che renderizza ogni pagina del PDF come immagine raster. I PDF a pagina singola restituiscono direttamente un file JPEG; i PDF multipagina restituiscono un archivio ZIP contenente un JPEG per pagina. Le risposte restituiscono per impostazione predefinita i byte grezzi del file, oppure metadati JSON con un URL di download prefirmato quando direct_download=false.


Endpoint#

POST /v1/convert/pdf-to-jpeg

Content-Type: multipart/form-data

Input accettato: file .pdf

Formato di output: .jpeg (image/jpeg) per i PDF a pagina singola, .zip (application/zip) per i PDF multipagina


Autenticazione#

Richiede una chiave API privata oppure un token JWT ottenuto da una chiave pubblica.

X-API-Key: sk_your_private_key

Oppure:

Authorization: Bearer <jwt_token>

Parametri della richiesta#

Parameter Type Required Default Description
file file -- Il file .pdf da convertire.
output_filename string No Nome del file di input Nome file di output personalizzato. L'estensione .jpeg o .zip viene aggiunta automaticamente.
direct_download boolean No true Quando true, restituisce i byte grezzi del file. Quando false, restituisce metadati JSON con un URL di download prefirmato.

Dettagli della conversione#

  • Usa PyMuPDF per renderizzare le pagine del PDF come immagini raster a risoluzione 2x (144 DPI)
  • Usa Pillow per la codifica JPEG con qualità massima
  • La trasparenza viene appiattita su uno sfondo bianco (JPEG non supporta il canale alfa)
  • I PDF a pagina singola restituiscono direttamente un file .jpeg
  • I PDF multipagina restituiscono un archivio .zip contenente page_1.jpeg, page_2.jpeg, ecc.
  • Il formato di output viene determinato automaticamente in base al numero di pagine

Risposta#

Download diretto (direct_download=true, predefinito)#

PDF a pagina singola:

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

Restituisce i byte grezzi dell'immagine JPEG.

PDF multipagina:

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

Restituisce un archivio ZIP contenente un JPEG per pagina.

Risposta con metadati (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
}

Esempi di codice#

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)

Risposte di errore#

Status Condition
400 Bad Request Il file non è un file .pdf
400 Bad Request Il PDF non ha pagine
400 Bad Request Conversione dell'immagine non riuscita (PDF corrotto o non supportato)
401 Unauthorized Chiave API o token JWT mancante o non valido
402 Payment Required Quota mensile di ops esaurita
402 Payment Required Limite di archiviazione raggiunto
413 Payload Too Large Il file supera la dimensione massima consentita dal piano

Limiti#

Limit Value
Dimensione massima del file Dipende dal piano (Founding: 5 MB)
Risoluzione di rendering 144 DPI (scala 2x)
Qualità di output Massima (qualità JPEG 100)
Conversioni mensili Dipende dal piano

Domande frequenti#

Come converto un PDF in immagini JPEG con una REST API?#

Invia una richiesta POST multipart/form-data a /v1/convert/pdf-to-jpeg con il file .pdf nel campo file, autenticata tramite X-API-Key o un JWT Bearer. Ricevi indietro i byte grezzi del file per impostazione predefinita, oppure imposta direct_download=false per ricevere JSON con un URL di download prefirmato.

Come gestisce l'API i PDF multipagina?#

I PDF a pagina singola restituiscono direttamente un file .jpeg, mentre i PDF multipagina restituiscono un archivio .zip contenente page_1.jpeg, page_2.jpeg e così via. Il formato di output viene determinato automaticamente in base al numero di pagine, quindi controlla l'header Content-Type (image/jpeg rispetto a application/zip) quando salvi la risposta.

A quale risoluzione vengono renderizzate le pagine del PDF?#

Le pagine vengono renderizzate con PyMuPDF a risoluzione 2x (144 DPI) e codificate come JPEG alla massima qualità (100). Nessuna delle due impostazioni è configurabile.

La conversione da PDF a JPEG mantiene la trasparenza?#

No. JPEG non supporta un canale alfa, quindi la trasparenza viene appiattita su uno sfondo bianco.

Perché l'endpoint da PDF a JPEG restituisce un errore 400?#

400 Bad Request viene restituito quando il file non è un .pdf, quando il PDF non ha pagine, oppure quando la conversione fallisce perché il PDF è corrotto o non supportato.