---
seo_title: API Qualsiasi File in PDF — Ogni File in PDF | EnConvert
meta_desc: Converti Word, Excel, PowerPoint, HTML, Markdown, EPUB e immagini in PDF con POST /v1/convert/anything-to-pdf — un unico endpoint API REST per qualsiasi file in PDF.
keywords: api qualsiasi file in pdf, api converti file in pdf, api docx in pdf, api word in pdf, api immagine in pdf, api html in pdf, api markdown in pdf, api rest converti documenti in pdf
---

# API Qualsiasi File in PDF

L'endpoint `POST /v1/convert/anything-to-pdf` converte quasi ogni file caricato — Word, Excel, PowerPoint, OpenDocument, Apple Pages e Numbers, HTML, Markdown, testo semplice, EPUB, immagini e SVG — in un PDF. Rileva automaticamente il formato dal file inviato, lo instrada verso il motore di rendering corretto e restituisce un unico PDF. Un solo endpoint sostituisce l'intero stack PDF per singolo formato: carichi un file, ricevi un PDF, qualunque sia il tipo di origine.

È il superset a chiamata singola degli endpoint PDF specifici per formato ([html-to-pdf](/it/docs/endpoints/documents-to-pdf/html-to-pdf), doc-to-pdf, excel-to-pdf e gli altri) — usa quelli quando conosci già il tipo di input e vuoi un controllo granulare della pagina, e usa questo quando l'input potrebbe essere qualsiasi cosa. Questo endpoint funziona solo su file; per convertire una pagina web dal vivo in PDF, usa [url-to-pdf](/it/docs/endpoints/web-pages/url-to-pdf). Per la controparte Markdown che trasforma qualsiasi file in Markdown pulito, vedi [anything-to-markdown](/it/docs/anything-to-markdown).

---

## Endpoint

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

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

**Formato di output:** PDF (`.pdf`, `application/pdf`). Il tipo di input viene rilevato automaticamente dall'estensione del nome del file caricato e dai suoi magic byte — non devi specificare un formato di input.

---

## Formati di input supportati

Il tipo di input viene rilevato dall'estensione del file (validata rispetto ai magic byte del file). Questi sono tutti i formati accettati dall'endpoint:

| Categoria | Formati | Estensioni | Note |
|----------|---------|------------|-------|
| Word | DOCX, DOC | `.docx`, `.doc` | Renderizzati tramite LibreOffice, preservando stili, tabelle e layout. |
| Excel | XLSX, XLS | `.xlsx`, `.xls` | Fogli di calcolo renderizzati in PDF paginato tramite LibreOffice. |
| PowerPoint | PPTX, PPT | `.pptx`, `.ppt` | Una pagina PDF per diapositiva, tramite LibreOffice. |
| OpenDocument | ODT, ODS, ODP, OTS | `.odt`, `.ods`, `.odp`, `.ots` | Documenti di testo, foglio di calcolo, presentazione e modello di foglio di calcolo, tramite LibreOffice. |
| Apple iWork | Pages, Numbers | `.pages`, `.numbers` | Documenti Apple Pages e Numbers, tramite LibreOffice. |
| Testo formattato / dati | RTF, CSV | `.rtf`, `.csv` | Documenti RTF e tabelle CSV renderizzati tramite LibreOffice. |
| Web / markup | HTML, XHTML | `.html`, `.htm`, `.xhtml` | Renderizzati con WeasyPrint, rispettando il CSS del documento stesso. |
| Markdown | Markdown | `.md`, `.markdown`, `.mdown`, `.mkd` | Renderizzato in un PDF stilizzato con intestazioni, tabelle e blocchi di codice. |
| Testo semplice | Text | `.txt`, `.text` | Renderizzato in un layout monospaziato che preserva gli spazi bianchi. |
| E-book | EPUB | `.epub` | Capitoli convertiti nell'ordine di lettura (spine) in un PDF testuale. |
| Immagini | PNG, JPEG, GIF, BMP, TIFF, WebP, HEIC | `.png`, `.jpg`, `.jpeg`, `.gif`, `.bmp`, `.tiff`, `.tif`, `.webp`, `.heic`, `.heif` | Ogni immagine diventa un PDF di una singola pagina; la trasparenza viene appiattita su sfondo bianco. |
| Vettoriale | SVG | `.svg` | Renderizzato come vettoriale (non rasterizzato) con CairoSVG. |
| PDF | PDF | `.pdf` | Accettato e restituito così com'è — utile per la normalizzazione in scala di grigi (vedi `pdf_options`). |

<div class="alert alert-info">
<strong>Nota:</strong> A differenza degli endpoint PDF specifici per formato, la geometria di pagina (dimensione pagina personalizzata, margini, orientamento, intestazioni e piè di pagina) <em>non</em> viene applicata qui, perché il formato di input è rilevato automaticamente e ogni tipo è renderizzato da un motore diverso. Su questo endpoint viene rispettato solo <code>grayscale</code>. Per il controllo completo della pagina, invia HTML o Markdown a <a href="/it/docs/endpoints/documents-to-pdf/html-to-pdf">html-to-pdf</a> o markdown-to-pdf. Per convertire un URL dal vivo in PDF, usa <a href="/it/docs/endpoints/web-pages/url-to-pdf">url-to-pdf</a>.
</div>

---

## Autenticazione

Questo endpoint supporta sia l'autenticazione con chiave privata sia con chiave pubblica.

### Chiave privata

Includi la tua chiave segreta nell'header `X-API-Key`. Usala per chiamate server-to-server in cui la chiave non viene mai esposta al client.

```
X-API-Key: sk_live_your_private_key
```

### Chiave pubblica con JWT

Per l'uso lato client, genera prima un token JWT con la tua chiave pubblica, poi passalo come Bearer token.

**Passo 1 -- Ottieni un token:**

```
POST /v1/auth/token
X-API-Key: pk_live_your_public_key
```

**Passo 2 -- Usa il token:**

```
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
```

Il flusso completo, incluso il domain locking e il refresh del token, è nella [guida all'autenticazione](/it/docs/authentication). Ogni chiave API porta con sé un allowlist di endpoint consentiti — se `/v1/convert/anything-to-pdf` non è nell'elenco della chiave, la richiesta viene rifiutata con `403`.

---

## Parametri della richiesta

Invia il file come `multipart/form-data`. Il documento va nel campo `file`; il resto sono campi form opzionali.

| Parametro | Tipo | Obbligatorio | Predefinito | Descrizione |
|-----------|------|----------|---------|-------------|
| `file` | file | Sì | -- | Il documento, l'immagine o il file di markup da convertire. La sua estensione deve essere uno dei formati di input supportati sopra. |
| `output_filename` | `string` | No | Nome input | Nome personalizzato per il file di output. L'estensione `.pdf` viene aggiunta automaticamente. |
| `direct_download` | `boolean` | No | `true` | Accettato per uniformità della forma della richiesta con gli altri endpoint di conversione. |
| `job_id` | `string` | No | -- | Job ID fornito dal client per il recupero in caso di timeout. Quando una conversione sincrona supera i limiti di timeout del reverse proxy, interroga `GET /v1/convert/status/{job_id}` per recuperare il risultato. |
| `pdf_options` | `string` | No | `null` | Stringa JSON di opzioni PDF. Su questo endpoint viene rispettato solo `grayscale` — vedi sotto. |

### Opzioni PDF

Passa una stringa JSON nel campo form `pdf_options`. Poiché il formato di input è rilevato automaticamente e ogni formato è renderizzato da un motore diverso, qui viene applicato in modo uniforme solo `grayscale`.

| Parametro | Tipo | Predefinito | Descrizione |
|-----------|------|---------|-------------|
| `grayscale` | `boolean` | `false` | Converte il PDF di output in scala di grigi tramite post-elaborazione con Ghostscript. Si applica a ogni tipo di input, incluso un caricamento già in PDF. |

Per una dimensione pagina personalizzata, margini, orientamento, intestazioni o piè di pagina, converti HTML o Markdown tramite gli endpoint specifici per formato [html-to-pdf](/it/docs/endpoints/documents-to-pdf/html-to-pdf) o markdown-to-pdf, che accettano lo schema `pdf_options` completo.

---

## Risposta

La conversione avviene in-process e il file `.pdf` risultante viene memorizzato, poi l'endpoint restituisce un corpo JSON con un URL di download pre-firmato:

```json
{
    "presigned_url": "https://spaces.example.com/...signed...",
    "object_key": "env/files/{project_id}/anything-to-pdf/report_20260714_101530123.pdf",
    "filename": "report_20260714_101530123.pdf",
    "file_size": 51240,
    "conversion_time_seconds": 2.1,
    "job_id": null
}
```

Gli stessi valori vengono riportati negli header della risposta (`X-Object-Key`, `X-File-Size`, `X-Conversion-Time`, `X-Filename`) così puoi leggerli senza analizzare il corpo. Scarica il PDF da `presigned_url` — il link ha vita breve.

---

## Come viene convertito ogni formato

Ogni formato viene normalizzato in un PDF, così ottieni un output coerente indipendentemente dal tipo di origine.

- **Word / Excel / PowerPoint** — Renderizzati con LibreOffice in modalità headless, preservando stili, tabelle e layout; le presentazioni producono una pagina per diapositiva. I formati binari legacy (`.doc`, `.xls`, `.ppt`) sono gestiti dallo stesso motore.
- **OpenDocument, Apple Pages / Numbers, RTF, CSV** — Anch'essi renderizzati tramite LibreOffice, così i documenti ODF, gli export iWork, il testo formattato e le tabelle CSV si paginano tutti in modo pulito.
- **HTML / XHTML** — Renderizzati con WeasyPrint, che rispetta il CSS del documento stesso. Le risorse esterne referenziate tramite URL potrebbero non risolversi — incorpora il tuo CSS inline e codifica le immagini in base64 per i migliori risultati.
- **Markdown** — Convertito in HTML (intestazioni, tabelle GitHub-Flavored, blocchi di codice) e renderizzato con WeasyPrint in un PDF pulito e stilizzato.
- **Testo semplice** — Renderizzato in un layout monospaziato che preserva gli spazi bianchi e manda a capo le righe lunghe, così log e codice restano leggibili.
- **EPUB** — I documenti di contenuto vengono letti nell'ordine spine (di lettura) e renderizzati capitolo per capitolo in un PDF testuale; il documento di navigazione viene saltato.
- **Immagini (PNG, JPEG, GIF, BMP, TIFF, WebP, HEIC)** — Ogni immagine diventa un PDF di una singola pagina tramite Pillow. La trasparenza viene appiattita su uno sfondo bianco e viene usato solo il primo fotogramma di un'immagine multi-fotogramma (GIF animata, TIFF multipagina).
- **SVG** — Renderizzato come vera grafica vettoriale con CairoSVG, così il risultato resta nitido a qualsiasi livello di zoom.
- **PDF** — Un PDF caricato viene validato e restituito invariato, il che rende questo endpoint un modo comodo per normalizzare in scala di grigi un PDF esistente.

---

## Formato di output

Il risultato è un PDF standard (`application/pdf`):

- **I documenti** mantengono impaginazione, intestazioni, tabelle e stile dal motore di rendering di origine.
- **Le immagini** producono una singola pagina dimensionata sull'immagine; **SVG** resta vettoriale.
- **Scala di grigi** — quando `pdf_options.grayscale` è `true`, il PDF finito viene desaturato tramite una passata di post-elaborazione con Ghostscript.

Se hai bisogno di Markdown pulito invece di un PDF — ad esempio per alimentare una pipeline LLM o RAG — invia lo stesso file a [anything-to-markdown](/it/docs/anything-to-markdown) o [l'endpoint di ingest](/it/docs/v2-ingest).

---

## Formati supportati per endpoint

Gli endpoint di upload file condividono lo stesso rilevamento automatico del formato ma puntano a output diversi. Questo endpoint (`anything-to-pdf`) accetta l'insieme più ampio — tutti i 36 formati sottostanti. [`anything-to-markdown`](/it/docs/anything-to-markdown) e [`/v2/ingest`](/it/docs/v2-ingest) accettano gli stessi 22 formati di documento tra loro (immagini, SVG e i formati Apple/OTS sono solo per PDF), e `/v2/ingest` accetta inoltre sorgenti web — un elenco di URL, una sitemap o un crawl — non solo file.

| Categoria | Estensioni | anything-to-pdf | anything-to-markdown | /v2/ingest |
|----------|------------|:---:|:---:|:---:|
| PDF | `.pdf` | ✓ | ✓ | ✓ |
| Word | `.docx`, `.doc` | ✓ | ✓ | ✓ |
| Excel | `.xlsx`, `.xls` | ✓ | ✓ | ✓ |
| PowerPoint | `.pptx`, `.ppt` | ✓ | ✓ | ✓ |
| CSV | `.csv` | ✓ | ✓ | ✓ |
| Testo formattato | `.rtf` | ✓ | ✓ | ✓ |
| OpenDocument | `.odt`, `.ods`, `.odp` | ✓ | ✓ | ✓ |
| Modello ODF | `.ots` | ✓ | — | — |
| Apple iWork | `.pages`, `.numbers` | ✓ | — | — |
| Web / markup | `.html`, `.htm`, `.xhtml` | ✓ | ✓ | ✓ |
| Markdown / testo | `.md`, `.markdown`, `.mdown`, `.mkd`, `.txt`, `.text` | ✓ | ✓ | ✓ |
| E-book | `.epub` | ✓ | ✓ | ✓ |
| Immagini | `.png`, `.jpg`, `.jpeg`, `.gif`, `.bmp`, `.tiff`, `.tif`, `.webp`, `.heic`, `.heif` | ✓ | — | — |
| Vettoriale | `.svg` | ✓ | — | — |

Un ✓ significa che l'endpoint accetta quel formato come upload di file; un — significa che non lo accetta. Immagini e SVG vengono convertiti in PDF qui ma sono respinti dagli endpoint con output Markdown (l'OCR delle immagini è una pipeline separata). I limiti di dimensione per file dipendono dal piano (Free: 5 MB) su tutti e tre gli endpoint.

---

## Esempi di codice

### curl (chiave privata)

```bash
curl -X POST https://api.enconvert.com/v1/convert/anything-to-pdf \
  -H "X-API-Key: sk_live_your_private_key" \
  -F "file=@quarterly-report.docx"
```

### Python (chiave privata)

```python
import requests

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

response.raise_for_status()
result = response.json()

# Download the PDF from the pre-signed URL.
pdf = requests.get(result["presigned_url"]).content
with open("quarterly-report.pdf", "wb") as out:
    out.write(pdf)
```

### Node.js (chiave privata)

```javascript
import { readFile, writeFile } from "node:fs/promises";

const form = new FormData();
form.append(
    "file",
    new Blob([await readFile("quarterly-report.docx")]),
    "quarterly-report.docx"
);

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

const result = await response.json();
const pdf = await fetch(result.presigned_url).then((r) => r.arrayBuffer());
await writeFile("quarterly-report.pdf", Buffer.from(pdf));
```

### PHP (chiave privata)

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/anything-to-pdf");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["X-API-Key: sk_live_your_private_key"],
    CURLOPT_POSTFIELDS => [
        "file" => new CURLFile("quarterly-report.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "quarterly-report.docx"),
    ],
]);

$data = json_decode(curl_exec($ch), true);
curl_close($ch);

echo $data["presigned_url"];
```

---

## Risposte di errore

| Status | Condizione |
|--------|-----------|
| `400 Bad Request` | Tipo di file non supportato, file vuoto o documento corrotto/illeggibile (es. un'immagine non valida o un EPUB malformato). |
| `400 Bad Request` | I byte del file non corrispondono all'estensione dichiarata (mancata corrispondenza dei magic byte). |
| `400 Bad Request` | JSON `pdf_options` non valido. |
| `401 Unauthorized` | Chiave API / token JWT mancante o non valido. |
| `402 Payment Required` | Limite mensile di conversioni o limite di archiviazione raggiunto. |
| `403 Forbidden` | `/v1/convert/anything-to-pdf` non è tra gli endpoint consentiti della chiave API. |
| `413 Payload Too Large` | Il caricamento supera il limite di dimensione per file del tuo piano. |
| `500 Internal Server Error` | Conversione fallita in modo imprevisto. |

Il riferimento completo dei codici di stato è nella [guida ai codici di errore](/it/docs/error-codes).

---

## Limiti

| Limite | Valore |
|-------|-------|
| Dimensione massima di caricamento | Dipende dal piano (Free: 5 MB) |
| Conversioni mensili | Dipende dal piano (Free: 100) |
| Conservazione dei file | Dipende dal piano (Free: 1 ora) |
| Opzioni di geometria della pagina | Non applicate su questo endpoint (solo `grayscale`) |
| Formati di input supportati | Vedi la tabella dei [formati di input supportati](#supported-input-formats) |

---

## Domande frequenti

### Come converto qualsiasi file in PDF con un'API?

Invia una richiesta `POST` a `/v1/convert/anything-to-pdf` come `multipart/form-data` con il tuo file nel campo `file` e la tua chiave nell'header `X-API-Key`. L'endpoint rileva automaticamente il formato, lo renderizza in PDF e restituisce JSON con un `presigned_url` al `.pdf` finito. Non devi indicare il tipo di input — lo decidono l'estensione e i magic byte.

### Quali formati di file posso convertire in PDF?

Word (`.docx`, `.doc`), Excel (`.xlsx`, `.xls`), PowerPoint (`.pptx`, `.ppt`), OpenDocument (`.odt`, `.ods`, `.odp`, `.ots`), Apple Pages e Numbers, RTF, CSV, HTML/XHTML, Markdown, testo semplice, EPUB, immagini (`.png`, `.jpg`, `.jpeg`, `.gif`, `.bmp`, `.tiff`, `.webp`, `.heic`) e SVG. Un PDF esistente viene accettato e restituito così com'è. L'elenco completo con le note per singolo formato è nella tabella dei [formati di input supportati](#supported-input-formats).

### Posso convertire Word, Excel o PowerPoint in PDF tramite l'API?

Sì. I documenti Office — moderni (`.docx`, `.xlsx`, `.pptx`) e legacy (`.doc`, `.xls`, `.ppt`) — vengono renderizzati con LibreOffice, preservando stili, tabelle e layout, con una pagina per diapositiva per le presentazioni. Carichi il file e ricevi il PDF.

### Come converto un'immagine come PNG, JPEG o HEIC in PDF?

Caricala sullo stesso endpoint. Ogni immagine diventa un PDF di una singola pagina, con la trasparenza appiattita su uno sfondo bianco; sono supportate anche le foto `.heic`/`.heif` dell'iPhone e i vettori `.svg`. Per un'immagine multi-fotogramma (GIF animata o TIFF multipagina), viene usato il primo fotogramma.

### Posso impostare una dimensione pagina personalizzata, margini o intestazioni sul PDF?

Non su questo endpoint — viene rispettato solo `grayscale`, perché il formato di input è rilevato automaticamente e ogni tipo usa un motore di rendering diverso. Per il controllo completo della pagina (dimensione pagina, margini, orientamento, intestazioni, piè di pagina), invia HTML o Markdown agli endpoint [html-to-pdf](/it/docs/endpoints/documents-to-pdf/html-to-pdf) o markdown-to-pdf, che accettano lo schema `pdf_options` completo.

### In cosa è diverso dagli endpoint doc-to-pdf o html-to-pdf?

Gli endpoint specifici per formato accettano ciascuno un tipo di input ed espongono le opzioni complete di geometria della pagina; `anything-to-pdf` li accetta tutti dietro una singola chiamata e rileva automaticamente il formato, il che è ideale quando l'input potrebbe essere qualsiasi cosa. Usa un endpoint specifico quando conosci il tipo e vuoi il controllo della pagina; usa questo quando vuoi un unico percorso di caricamento per molti formati.
