API ODS en PDF#
L'API ODS en PDF convertit les fichiers OpenDocument Spreadsheet (.ods, le format de tableur natif de LibreOffice et OpenOffice Calc) en PDF via l'endpoint POST /v1/convert/ods-to-pdf. Envoyez un fichier .ods en multipart/form-data et recevez les octets PDF bruts en retour, ou définissez direct_download=false pour obtenir des métadonnées JSON avec une URL de téléchargement présignée. Le rendu est effectué côté serveur par LibreOffice : la mise en forme, les polices et la mise en page propres au classeur sont préservées dans le PDF généré.
Endpoint#
POST /v1/convert/ods-to-pdf
Content-Type : multipart/form-data
Entrée acceptée : fichiers .ods
Format de sortie : .pdf (application/pdf)
Authentification#
Requiert une clé API privée ou un jeton JWT issu d'une clé publique.
X-API-Key: sk_your_private_key
Ou :
Authorization: Bearer <jwt_token>
Paramètres de la requête#
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
file |
file | Oui | -- | Le fichier .ods à convertir. |
output_filename |
string |
Non | Nom du fichier d'entrée | Nom de fichier de sortie personnalisé. L'extension .pdf est ajoutée automatiquement. |
direct_download |
boolean |
Non | true |
Avec true, renvoie les octets PDF bruts. Avec false, renvoie des métadonnées JSON avec une URL de téléchargement présignée. |
pdf_options |
string |
Non | null |
Chaîne JSON. Seule l'option grayscale est prise en charge pour cet endpoint (voir ci-dessous). |
Options PDF#
Pour les convertisseurs de documents basés sur LibreOffice, la mise en page (taille, marges, orientation) est déterminée par les paramètres du document lui-même. Le seul champ pdf_options pris en compte est :
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
grayscale |
boolean |
false |
Convertit le PDF de sortie en niveaux de gris via un post-traitement Ghostscript. |
pdf_options ne s'appliquent pas à cet endpoint. Le PDF généré conserve la mise en forme définie dans le document d'origine. Pour changer la mise en page, modifiez le document source avant de l'envoyer.
Détails de la conversion#
- Utilise LibreOffice (via unoserver) pour le rendu des documents côté serveur
- La mise en forme, les polices, la mise en page et les médias intégrés du document sont préservés
- Délai maximal de conversion : 120 secondes
- La sortie reproduit fidèlement le document tel qu'il serait imprimé depuis LibreOffice
Réponse#
Téléchargement direct (direct_download=true, par défaut)#
HTTP 200 OK
Content-Type: application/pdf
Content-Disposition: inline; filename="document_20260405_123456789.pdf"
Renvoie les octets PDF bruts.
Réponse avec métadonnées (direct_download=false)#
{
"presigned_url": "https://spaces.example.com/...",
"object_key": "env/files/{project_id}/ods-to-pdf/document_20260405_123456789.pdf",
"filename": "document_20260405_123456789.pdf",
"file_size": 67890,
"conversion_time_seconds": 3.5
}
Exemples de code#
Python#
import requests
with open("document.ods", "rb") as f:
response = requests.post(
"https://api.enconvert.com/v1/convert/ods-to-pdf",
headers={"X-API-Key": "sk_your_private_key"},
files={"file": ("document.ods", f)}
)
with open("output.pdf", "wb") as out:
out.write(response.content)
Node.js#
const form = new FormData();
form.append("file", fs.createReadStream("document.ods"));
const response = await fetch("https://api.enconvert.com/v1/convert/ods-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/ods-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.ods")]
]);
$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.ods")
file, _ := os.Open("document.ods")
io.Copy(part, file)
writer.Close()
req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/ods-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)
Avec sortie en niveaux de gris#
import requests
import json
with open("document.ods", "rb") as f:
response = requests.post(
"https://api.enconvert.com/v1/convert/ods-to-pdf",
headers={"X-API-Key": "sk_your_private_key"},
files={"file": ("document.ods", f)},
data={"pdf_options": json.dumps({"grayscale": True})}
)
Réponses d'erreur#
| Statut | Condition |
|---|---|
400 Bad Request |
Le fichier n'est pas un fichier .ods |
400 Bad Request |
Échec de la conversion du document (fichier corrompu ou non pris en charge) |
400 Bad Request |
JSON pdf_options invalide |
401 Unauthorized |
Clé API / jeton JWT manquant ou invalide |
402 Payment Required |
Quota mensuel d'ops épuisé |
402 Payment Required |
Limite de stockage atteinte |
413 Payload Too Large |
Le fichier dépasse la taille maximale autorisée par le plan |
500 Internal Server Error |
Délai de conversion dépassé (limite de 120 secondes) |
Limites#
| Limite | Valeur |
|---|---|
| Taille maximale de fichier | Selon le plan (Founding : 5 MB) |
| Délai maximal de conversion | 120 secondes |
| Conversions mensuelles | Selon le plan |
Questions fréquentes#
Comment convertir un classeur ODS en PDF avec une API REST ?#
Envoyez une requête POST à /v1/convert/ods-to-pdf avec le fichier .ods dans un corps multipart/form-data, authentifiée par un en-tête X-API-Key ou un JWT Authorization: Bearer. La réponse contient par défaut les octets du PDF converti.
Puis-je convertir des classeurs LibreOffice ou OpenOffice Calc en PDF avec cette API ?#
Oui. L'endpoint accepte les fichiers .ods, le format OpenDocument Spreadsheet utilisé par LibreOffice et OpenOffice Calc, et les rend côté serveur avec LibreOffice : la sortie correspond à ce que donnerait l'impression du classeur depuis LibreOffice.
Puis-je obtenir une URL de téléchargement au lieu des octets PDF bruts ?#
Oui. Définissez direct_download=false et l'API renvoie des métadonnées JSON incluant une presigned_url, le filename de sortie, file_size et conversion_time_seconds.
Puis-je changer la taille de page, les marges ou l'orientation du PDF généré ?#
Non. La mise en page provient des paramètres du document ODS lui-même ; le seul champ pdf_options pris en charge est grayscale. Pour changer la mise en page, modifiez le document source avant de l'envoyer.
Pourquoi l'endpoint ods-to-pdf renvoie-t-il 400 Bad Request ?#
Une erreur 400 Bad Request est renvoyée lorsque le fichier envoyé n'est pas un .ods, lorsque le document est corrompu ou non pris en charge, ou lorsque la valeur de pdf_options n'est pas du JSON valide.