---
seo_title: API PowerPoint in PDF: converti PPT e PPTX in PDF | EnConvert
meta_desc: Converti PowerPoint in PDF via API REST. POST /v1/convert/ppt-to-pdf trasforma presentazioni .ppt e .pptx in PDF ad alta fedeltà con rendering LibreOffice.
keywords: powerpoint in pdf api, ppt in pdf api, pptx in pdf api, convertire pptx in pdf api, api rest presentazione in pdf, api conversione powerpoint pdf, pptx in pdf api python, ppt in pdf api node js
---

# API PowerPoint in PDF

L'API PowerPoint in PDF converte presentazioni Microsoft PowerPoint (`.ppt`, `.pptx`) in PDF tramite `POST /v1/convert/ppt-to-pdf`, usando il motore di rendering ad alta fedeltà di LibreOffice. Formattazione, font e layout della presentazione vengono preservati nel PDF in output. La risposta è composta dai byte PDF grezzi per default, oppure da metadati JSON con un URL di download prefirmato quando `direct_download=false`.

---

## Endpoint

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

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

**Input accettato:** file `.ppt or .pptx`

**Formato di output:** `.pdf` (`application/pdf`)

---

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

| Parametro | Tipo | Obbligatorio | Default | Descrizione |
|-----------|------|----------|---------|-------------|
| `file` | file | Sì | -- | Il file `.ppt or .pptx` da convertire. |
| `output_filename` | `string` | No | Nome del file di input | Nome file di output personalizzato. L'estensione `.pdf` viene aggiunta automaticamente. |
| `direct_download` | `boolean` | No | `true` | Con `true`, restituisce i byte PDF grezzi. Con `false`, restituisce metadati JSON con un URL di download prefirmato. |
| `pdf_options` | `string` | No | `null` | Stringa JSON. Per questo endpoint è supportata solo l'opzione `grayscale` (vedi sotto). |

### Opzioni PDF

Per i convertitori di documenti basati su LibreOffice, il layout di pagina (formato, margini, orientamento) è determinato dalle impostazioni del documento stesso. L'unico campo `pdf_options` che si applica è:

| Parametro | Tipo | Default | Descrizione |
|-----------|------|---------|-------------|
| `grayscale` | `boolean` | `false` | Converte il PDF in output in scala di grigi tramite post-elaborazione con Ghostscript. |

<div class="alert alert-info">
<strong>Nota:</strong> formato pagina, margini, orientamento, scala, header e footer di <code>pdf_options</code> non si applicano a questo endpoint. Il PDF in output preserva la formattazione definita nel documento originale. Per cambiare il layout di pagina, modifica il documento sorgente prima del caricamento.
</div>

---

## Dettagli della conversione

- Usa **LibreOffice** (tramite unoserver) per il rendering dei documenti lato server
- Formattazione, font, layout di pagina e media incorporati del documento vengono preservati
- Timeout di conversione: 120 secondi
- L'output riproduce fedelmente il documento come apparirebbe stampato da LibreOffice

---

## Risposta

### Download diretto (`direct_download=true`, default)

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

Restituisce i byte PDF grezzi.

### Risposta con metadati (`direct_download=false`)

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

---

## Esempi di codice

### Python

```python
import requests

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

with open("output.pdf", "wb") as out:
    out.write(response.content)
```

### Node.js

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

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

fs.writeFileSync("output.pdf", Buffer.from(await response.arrayBuffer()));
```

### PHP

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/ppt-to-pdf");
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.ppt")]
]);
$pdf = curl_exec($ch);
curl_close($ch);
file_put_contents("output.pdf", $pdf);
```

### Go

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

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

### Con output in scala di grigi

```python
import requests
import json

with open("document.ppt", "rb") as f:
    response = requests.post(
        "https://api.enconvert.com/v1/convert/ppt-to-pdf",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("document.ppt", f)},
        data={"pdf_options": json.dumps({"grayscale": True})}
    )
```

---

## Risposte di errore

| Stato | Condizione |
|--------|-----------|
| `400 Bad Request` | Il file non è un file `.ppt or .pptx` |
| `400 Bad Request` | Conversione del documento non riuscita (file corrotto o non supportato) |
| `400 Bad Request` | JSON `pdf_options` non valido |
| `401 Unauthorized` | Chiave API / token JWT mancante o non valido |
| `402 Payment Required` | Quota mensile di ops esaurita |
| `402 Payment Required` | Limite di storage raggiunto |
| `413 Payload Too Large` | Il file supera la dimensione massima prevista dal piano |
| `500 Internal Server Error` | Timeout della conversione (limite di 120 secondi) |

---

## Limiti

| Limite | Valore |
|-------|-------|
| Dimensione massima del file | Dipende dal piano (Founding: 5 MB) |
| Timeout di conversione | 120 secondi |
| Conversioni mensili | Dipende dal piano |

## Domande frequenti

### Come converto una presentazione PPTX in PDF con un'API REST?

Invia una richiesta `multipart/form-data` a `POST /v1/convert/ppt-to-pdf` con il file `.ppt` o `.pptx` nel campo `file`, autenticandoti con `X-API-Key` o un JWT Bearer. Per default la risposta è composta dai byte PDF grezzi con `Content-Type: application/pdf`.

### La conversione da PowerPoint a PDF preserva formattazione e font delle slide?

Sì. L'endpoint usa LibreOffice (tramite unoserver) per il rendering lato server, quindi formattazione, font, layout di pagina e media incorporati della presentazione vengono preservati. L'output riproduce il documento come apparirebbe stampato da LibreOffice.

### Posso impostare formato pagina, margini o orientamento nella conversione da PowerPoint a PDF?

No. Il layout di pagina è determinato dalle impostazioni della presentazione stessa e l'unico campo `pdf_options` supportato su questo endpoint è `grayscale`. Per cambiare il layout di pagina, modifica il file sorgente prima del caricamento.

### Perché la mia conversione da PowerPoint a PDF è fallita o è andata in timeout?

Un `400 Bad Request` significa che il file non è `.ppt` o `.pptx`, è corrotto o non supportato, oppure il JSON `pdf_options` non è valido. Un `500 Internal Server Error` significa che la conversione ha superato il timeout di 120 secondi.

### Posso ottenere un URL di download invece dei byte PDF?

Sì. Imposta `direct_download=false` e l'endpoint restituisce metadati JSON che includono `presigned_url`, `object_key`, `filename`, `file_size` e `conversion_time_seconds`.
