---
seo_title: API da PDF a JPEG: Renderizza pagine come immagini | EnConvert
meta_desc: Converti PDF in immagini JPEG con POST /v1/convert/pdf-to-jpeg. Renderizza ogni pagina a 144 DPI; i PDF multipagina restituiscono uno ZIP con un JPEG per pagina.
keywords: convertire pdf in jpg, api per convertire pdf in immagini, pdf to jpeg api, renderizzare pagine pdf come immagini, convertire pagine pdf in jpg via api, pdf to image converter api, convertitore pdf jpg online, pdf multipagina in zip di immagini
---

# 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 | Sì | -- | 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`)

```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
}
```

---

## Esempi di codice

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

---

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