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.
Note : La taille de page, les marges, l'orientation, l'échelle, les en-têtes et les pieds de page de 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.