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, 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. Per la controparte Markdown che trasforma qualsiasi file in Markdown pulito, vedi 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).
Nota: A differenza degli endpoint PDF specifici per formato, la geometria di pagina (dimensione pagina personalizzata, margini, orientamento, intestazioni e piè di pagina) non viene applicata qui, perché il formato di input è rilevato automaticamente e ogni tipo è renderizzato da un motore diverso. Su questo endpoint viene rispettato solo grayscale. Per il controllo completo della pagina, invia HTML o Markdown a html-to-pdf o markdown-to-pdf. Per convertire un URL dal vivo in PDF, usa url-to-pdf.

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

{
    "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 o l'endpoint di 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 e /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)#

curl -X POST https://api.enconvert.com/v1/convert/anything-to-pdf \
  -H "X-API-Key: sk_live_your_private_key" \
  -F "[email protected]"

Python (chiave privata)#

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

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

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


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

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.

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