API ODP in PDF#
L'API ODP in PDF converte file OpenDocument Presentation (.odp, il formato di diapositive nativo di LibreOffice e OpenOffice Impress) in PDF tramite l'endpoint POST /v1/convert/odp-to-pdf. Carica un file .odp come multipart/form-data e ricevi in risposta i byte PDF grezzi, oppure imposta direct_download=false per ottenere metadati JSON con un URL di download prefirmato. Il rendering è gestito lato server da LibreOffice, quindi formattazione, font e layout della presentazione vengono preservati nell'output PDF.
Endpoint#
POST /v1/convert/odp-to-pdf
Content-Type: multipart/form-data
Input accettato: file .odp
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 .odp 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 |
Se true, restituisce i byte PDF grezzi. Se 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 (dimensioni, margini, orientamento) è determinato dalle impostazioni del documento stesso. L'unico campo di pdf_options che si applica è:
| Parametro | Tipo | Default | Descrizione |
|---|---|---|---|
grayscale |
boolean |
false |
Converte il PDF di output in scala di grigi tramite post-elaborazione con Ghostscript. |
pdf_options non si applicano a questo endpoint. L'output PDF preserva la formattazione definita nel documento originale. Per cambiare il layout di pagina, modifica il documento sorgente prima del caricamento.
Dettagli della conversione#
- Usa LibreOffice (tramite unoserver) per il rendering dei documenti lato server
- Formattazione, font, layout di pagina e contenuti multimediali incorporati del documento vengono preservati
- Timeout di conversione: 120 secondi
- L'output riproduce fedelmente il documento come apparirebbe stampandolo da LibreOffice
Risposta#
Download diretto (direct_download=true, predefinito)#
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)#
{
"presigned_url": "https://spaces.example.com/...",
"object_key": "env/files/{project_id}/odp-to-pdf/document_20260405_123456789.pdf",
"filename": "document_20260405_123456789.pdf",
"file_size": 67890,
"conversion_time_seconds": 3.5
}
Esempi di codice#
Python#
import requests
with open("document.odp", "rb") as f:
response = requests.post(
"https://api.enconvert.com/v1/convert/odp-to-pdf",
headers={"X-API-Key": "sk_your_private_key"},
files={"file": ("document.odp", f)}
)
with open("output.pdf", "wb") as out:
out.write(response.content)
Node.js#
const form = new FormData();
form.append("file", fs.createReadStream("document.odp"));
const response = await fetch("https://api.enconvert.com/v1/convert/odp-to-pdf", {
method: "POST",
headers: { "X-API-Key": "sk_your_private_key" },
body: form
});
fs.writeFileSync("output.pdf", Buffer.from(await response.arrayBuffer()));
PHP#
$ch = curl_init("https://api.enconvert.com/v1/convert/odp-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.odp")]
]);
$pdf = curl_exec($ch);
curl_close($ch);
file_put_contents("output.pdf", $pdf);
Go#
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("file", "document.odp")
file, _ := os.Open("document.odp")
io.Copy(part, file)
writer.Close()
req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/odp-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#
import requests
import json
with open("document.odp", "rb") as f:
response = requests.post(
"https://api.enconvert.com/v1/convert/odp-to-pdf",
headers={"X-API-Key": "sk_your_private_key"},
files={"file": ("document.odp", f)},
data={"pdf_options": json.dumps({"grayscale": True})}
)
Risposte di errore#
| Stato | Condizione |
|---|---|
400 Bad Request |
Il file non è un file .odp |
400 Bad Request |
Conversione del documento non riuscita (file corrotto o non supportato) |
400 Bad Request |
JSON di pdf_options non valido |
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 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 ODP in PDF con una API REST?#
Invia una richiesta POST a /v1/convert/odp-to-pdf con il file .odp in un body multipart/form-data, autenticandoti con un header X-API-Key o un JWT Authorization: Bearer. Di default la risposta contiene i byte del PDF convertito.
Posso convertire presentazioni LibreOffice o OpenOffice Impress in PDF con questa API?#
Sì. L'endpoint accetta file .odp, il formato OpenDocument Presentation usato da LibreOffice e OpenOffice Impress, e li renderizza lato server con LibreOffice, quindi l'output corrisponde a come la presentazione verrebbe stampata da LibreOffice.
Posso ottenere un URL di download invece dei byte PDF grezzi?#
Sì. Imposta direct_download=false e l'API restituisce metadati JSON che includono presigned_url, il filename di output, file_size e conversion_time_seconds.
Posso cambiare dimensioni di pagina, margini o orientamento del PDF di output?#
No. Il layout di pagina deriva dalle impostazioni del documento ODP stesso; l'unico campo pdf_options supportato è grayscale. Per cambiare il layout, modifica il documento sorgente prima del caricamento.
Perché l'endpoint odp-to-pdf restituisce 400 Bad Request?#
Un 400 Bad Request viene restituito quando il file caricato non è un .odp, quando il documento è corrotto o non supportato, o quando il valore di pdf_options non è JSON valido.