API OTS in PDF#

L'API OTS in PDF converte file OpenDocument Spreadsheet Template (.ots, il formato di modello di foglio di calcolo di LibreOffice e OpenOffice Calc) in PDF tramite l'endpoint POST /v1/convert/ots-to-pdf. Carica un file .ots 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 del modello vengono preservati nell'output PDF.


Endpoint#

POST /v1/convert/ots-to-pdf

Content-Type: multipart/form-data

Input accettato: file .ots

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 -- Il file .ots 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.
Nota: Dimensioni di pagina, margini, orientamento, scala, intestazioni e piè di pagina di 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}/ots-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.ots", "rb") as f:
    response = requests.post(
        "https://api.enconvert.com/v1/convert/ots-to-pdf",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("document.ots", f)}
    )

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

Node.js#

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

const response = await fetch("https://api.enconvert.com/v1/convert/ots-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/ots-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.ots")]
]);
$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.ots")
file, _ := os.Open("document.ots")
io.Copy(part, file)
writer.Close()

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/ots-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.ots", "rb") as f:
    response = requests.post(
        "https://api.enconvert.com/v1/convert/ots-to-pdf",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("document.ots", f)},
        data={"pdf_options": json.dumps({"grayscale": True})}
    )

Risposte di errore#

Stato Condizione
400 Bad Request Il file non è un file .ots
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 un modello di foglio di calcolo OTS in PDF con una API REST?#

Invia una richiesta POST a /v1/convert/ots-to-pdf con il file .ots 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 file modello di LibreOffice o OpenOffice Calc in PDF con questa API?#

Sì. L'endpoint accetta file .ots, il formato OpenDocument Spreadsheet Template usato da LibreOffice e OpenOffice Calc, e li renderizza lato server con LibreOffice, quindi l'output corrisponde a come il documento verrebbe stampato 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 OTS stesso; l'unico campo pdf_options supportato è grayscale. Per cambiare il layout, modifica il documento sorgente prima del caricamento.

Perché l'endpoint ots-to-pdf restituisce 400 Bad Request?#

Un 400 Bad Request viene restituito quando il file caricato non è un .ots, quando il documento è corrotto o non supportato, o quando il valore di pdf_options non è JSON valido.