---
seo_title: API N'importe quoi vers PDF — Tout fichier en PDF | EnConvert
meta_desc: Convertissez Word, Excel, PowerPoint, HTML, Markdown, EPUB et images en PDF avec POST /v1/convert/anything-to-pdf — un seul endpoint REST pour tout fichier en PDF.
keywords: api n'importe quoi vers pdf, convertir tout fichier en pdf api, api docx en pdf, api word en pdf, api image en pdf, api html en pdf, api markdown en pdf, convertir documents en pdf api rest
---

# API N'importe quoi vers PDF

L'endpoint `POST /v1/convert/anything-to-pdf` convertit presque n'importe quel fichier envoyé — Word, Excel, PowerPoint, OpenDocument, Apple Pages et Numbers, HTML, Markdown, texte brut, EPUB, images et SVG — en PDF. Il détecte automatiquement le format du fichier que vous envoyez, l'achemine vers le bon moteur de rendu et renvoie un seul PDF. Un seul endpoint remplace toute la pile PDF spécifique à chaque format : vous envoyez un fichier, vous récupérez un PDF, quel que soit le type source.

C'est le sur-ensemble en un seul appel des endpoints PDF propres à chaque format ([html-to-pdf](/fr/docs/endpoints/documents-to-pdf/html-to-pdf), doc-to-pdf, excel-to-pdf, et le reste) — utilisez ceux-ci lorsque vous connaissez déjà le type d'entrée et souhaitez un contrôle fin des pages, et utilisez celui-ci lorsque l'entrée peut être n'importe quoi. Cet endpoint fonctionne uniquement à partir de fichiers ; pour rendre une page web en direct en PDF, utilisez [url-to-pdf](/fr/docs/endpoints/web-pages/url-to-pdf). Pour l'équivalent Markdown qui transforme n'importe quel fichier en Markdown propre, voir [anything-to-markdown](/fr/docs/anything-to-markdown).

---

## Endpoint

```
POST /v1/convert/anything-to-pdf
```

**Content-Type :** `multipart/form-data`

**Format de sortie :** PDF (`.pdf`, `application/pdf`). Le type d'entrée est détecté automatiquement à partir de l'extension du nom de fichier envoyé et de ses magic bytes — vous n'avez pas à spécifier de format d'entrée.

---

## Formats d'entrée pris en charge

Le type d'entrée est détecté à partir de l'extension du fichier (validée par rapport aux magic bytes du fichier). Voici tous les formats acceptés par l'endpoint :

| Catégorie | Formats | Extensions | Remarques |
|----------|---------|------------|-------|
| Word | DOCX, DOC | `.docx`, `.doc` | Rendu via LibreOffice, en préservant les styles, tableaux et la mise en page. |
| Excel | XLSX, XLS | `.xlsx`, `.xls` | Feuilles de calcul rendues en PDF paginé via LibreOffice. |
| PowerPoint | PPTX, PPT | `.pptx`, `.ppt` | Une page PDF par diapositive, via LibreOffice. |
| OpenDocument | ODT, ODS, ODP, OTS | `.odt`, `.ods`, `.odp`, `.ots` | Documents texte, feuille de calcul, présentation et modèle de feuille de calcul, via LibreOffice. |
| Apple iWork | Pages, Numbers | `.pages`, `.numbers` | Documents Apple Pages et Numbers, via LibreOffice. |
| Texte enrichi / données | RTF, CSV | `.rtf`, `.csv` | Documents RTF et tableaux CSV rendus via LibreOffice. |
| Web / balisage | HTML, XHTML | `.html`, `.htm`, `.xhtml` | Rendu avec WeasyPrint, en respectant le CSS propre au document. |
| Markdown | Markdown | `.md`, `.markdown`, `.mdown`, `.mkd` | Rendu en un PDF stylisé avec titres, tableaux et blocs de code délimités. |
| Texte brut | Text | `.txt`, `.text` | Rendu dans une mise en page à chasse fixe qui préserve les espaces. |
| Livres numériques | EPUB | `.epub` | Chapitres convertis dans l'ordre de lecture (spine) en un PDF de texte. |
| Images | PNG, JPEG, GIF, BMP, TIFF, WebP, HEIC | `.png`, `.jpg`, `.jpeg`, `.gif`, `.bmp`, `.tiff`, `.tif`, `.webp`, `.heic`, `.heif` | Chaque image devient un PDF d'une seule page ; la transparence est aplatie sur du blanc. |
| Vectoriel | SVG | `.svg` | Rendu en vectoriel (non rastérisé) avec CairoSVG. |
| PDF | PDF | `.pdf` | Accepté et renvoyé tel quel — utile pour la normalisation en niveaux de gris (voir `pdf_options`). |

<div class="alert alert-info">
<strong>Remarque :</strong> Contrairement aux endpoints PDF spécifiques à chaque format, la géométrie de page (taille de page personnalisée, marges, orientation, en-têtes et pieds de page) n'est <em>pas</em> appliquée ici, car le format d'entrée est détecté automatiquement et chaque type est rendu par un moteur différent. Seul <code>grayscale</code> est pris en compte sur cet endpoint. Pour un contrôle complet de la page, envoyez plutôt du HTML ou du Markdown à <a href="/fr/docs/endpoints/documents-to-pdf/html-to-pdf">html-to-pdf</a> ou markdown-to-pdf. Pour convertir une URL en direct en PDF, utilisez <a href="/fr/docs/endpoints/web-pages/url-to-pdf">url-to-pdf</a>.
</div>

---

## Authentification

Cet endpoint prend en charge l'authentification par clé privée comme par clé publique.

### Clé privée

Incluez votre clé secrète dans l'en-tête `X-API-Key`. Utilisez-la pour les appels de serveur à serveur où la clé n'est jamais exposée au client.

```
X-API-Key: sk_live_your_private_key
```

### Clé publique avec JWT

Pour une utilisation côté client, générez d'abord un token JWT avec votre clé publique, puis transmettez-le comme token Bearer.

**Étape 1 -- Obtenir un token :**

```
POST /v1/auth/token
X-API-Key: pk_live_your_public_key
```

**Étape 2 -- Utiliser le token :**

```
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
```

Le flux complet, y compris le verrouillage de domaine et le rafraîchissement du token, est décrit dans [le guide d'authentification](/fr/docs/authentication). Chaque clé API porte une liste blanche d'endpoints autorisés — si `/v1/convert/anything-to-pdf` ne figure pas dans la liste de la clé, la requête est rejetée avec un `403`.

---

## Paramètres de la requête

Envoyez le fichier en `multipart/form-data`. Le document va dans le champ `file` ; les autres sont des champs de formulaire optionnels.

| Paramètre | Type | Requis | Défaut | Description |
|-----------|------|----------|---------|-------------|
| `file` | file | Oui | -- | Le document, l'image ou le fichier de balisage à convertir. Son extension doit faire partie des formats d'entrée pris en charge ci-dessus. |
| `output_filename` | `string` | Non | Nom d'entrée | Nom personnalisé pour le fichier de sortie. L'extension `.pdf` est ajoutée automatiquement. |
| `direct_download` | `boolean` | Non | `true` | Accepté pour la cohérence de forme de requête avec les autres endpoints de conversion. |
| `job_id` | `string` | Non | -- | ID de job fourni par le client pour la récupération en cas de timeout. Lorsqu'une conversion synchrone dépasse les limites de timeout du reverse-proxy, interrogez `GET /v1/convert/status/{job_id}` pour récupérer le résultat. |
| `pdf_options` | `string` | Non | `null` | Chaîne JSON d'options PDF. Seul `grayscale` est pris en compte sur cet endpoint — voir ci-dessous. |

### Options PDF

À passer sous forme de chaîne JSON dans le champ de formulaire `pdf_options`. Comme le format d'entrée est détecté automatiquement et que chaque format est rendu par un moteur différent, seul `grayscale` est appliqué uniformément ici.

| Paramètre | Type | Défaut | Description |
|-----------|------|---------|-------------|
| `grayscale` | `boolean` | `false` | Convertit le PDF de sortie en niveaux de gris via un post-traitement Ghostscript. S'applique à chaque type d'entrée, y compris à un fichier déjà PDF. |

Pour une taille de page personnalisée, des marges, une orientation, des en-têtes ou des pieds de page, convertissez du HTML ou du Markdown via les endpoints spécifiques [html-to-pdf](/fr/docs/endpoints/documents-to-pdf/html-to-pdf) ou markdown-to-pdf, qui acceptent le schéma `pdf_options` complet.

---

## Réponse

La conversion s'exécute en cours de processus et le fichier `.pdf` résultant est stocké, puis l'endpoint renvoie un corps JSON avec une URL de téléchargement pré-signée :

```json
{
    "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
}
```

Les mêmes valeurs sont reportées dans les en-têtes de réponse (`X-Object-Key`, `X-File-Size`, `X-Conversion-Time`, `X-Filename`) afin que vous puissiez les lire sans analyser le corps. Téléchargez le PDF depuis `presigned_url` — le lien est à durée de vie courte.

---

## Comment chaque format est converti

Chaque format est normalisé en PDF, vous obtenez donc une sortie cohérente quel que soit le type source.

- **Word / Excel / PowerPoint** — Rendu avec LibreOffice en mode headless, en préservant les styles, tableaux et la mise en page ; les présentations produisent une page par diapositive. Les formats binaires hérités (`.doc`, `.xls`, `.ppt`) sont traités par le même moteur.
- **OpenDocument, Apple Pages / Numbers, RTF, CSV** — Également rendus via LibreOffice, si bien que les documents ODF, les exports iWork, le texte enrichi et les tableaux CSV se paginent proprement.
- **HTML / XHTML** — Rendu avec WeasyPrint, qui respecte le CSS propre au document. Les ressources externes référencées par URL peuvent ne pas être résolues — insérez votre CSS en ligne et encodez les images en base64 pour de meilleurs résultats.
- **Markdown** — Converti en HTML (titres, tableaux au format GitHub-Flavored, code délimité) et rendu avec WeasyPrint en un PDF propre et stylisé.
- **Texte brut** — Rendu dans une mise en page à chasse fixe qui préserve les espaces et retourne les lignes longues à la ligne, afin que les logs et le code restent lisibles.
- **EPUB** — Les documents de contenu sont lus dans l'ordre de la spine (ordre de lecture) et rendus chapitre par chapitre en un PDF de texte ; le document de navigation est ignoré.
- **Images (PNG, JPEG, GIF, BMP, TIFF, WebP, HEIC)** — Chaque image devient un PDF d'une seule page via Pillow. La transparence est aplatie sur un fond blanc, et seule la première image d'une image multi-trames (GIF animé, TIFF multi-pages) est utilisée.
- **SVG** — Rendu en véritables graphiques vectoriels avec CairoSVG, de sorte que le résultat reste net à n'importe quel niveau de zoom.
- **PDF** — Un PDF envoyé est validé et renvoyé inchangé, ce qui fait de cet endpoint un moyen pratique de normaliser un PDF existant en niveaux de gris.

---

## Format de sortie

Le résultat est un PDF standard (`application/pdf`) :

- **Les documents** conservent leur pagination, leurs titres, leurs tableaux et leur mise en forme issus du moteur de rendu source.
- **Les images** produisent une seule page dimensionnée à l'image ; **le SVG** reste vectoriel.
- **Niveaux de gris** — lorsque `pdf_options.grayscale` vaut `true`, le PDF finalisé est désaturé via une passe de post-traitement Ghostscript.

Si vous avez besoin de Markdown propre plutôt que d'un PDF — par exemple pour alimenter un LLM ou un pipeline RAG — envoyez le même fichier à [anything-to-markdown](/fr/docs/anything-to-markdown) ou à [l'endpoint d'ingestion](/fr/docs/v2-ingest).

---

## Formats pris en charge par endpoint

Les endpoints d'envoi de fichiers partagent la même détection automatique de format mais visent des sorties différentes. Cet endpoint (`anything-to-pdf`) accepte l'ensemble le plus large — les 36 formats ci-dessous. [`anything-to-markdown`](/fr/docs/anything-to-markdown) et [`/v2/ingest`](/fr/docs/v2-ingest) acceptent les mêmes 22 formats de documents l'un que l'autre (les images, le SVG et les formats Apple/OTS sont réservés au PDF), et `/v2/ingest` accepte en plus des sources web — une liste d'URL, un sitemap ou un crawl — pas seulement des fichiers.

| Catégorie | Extensions | anything-to-pdf | anything-to-markdown | /v2/ingest |
|----------|------------|:---:|:---:|:---:|
| PDF | `.pdf` | ✓ | ✓ | ✓ |
| Word | `.docx`, `.doc` | ✓ | ✓ | ✓ |
| Excel | `.xlsx`, `.xls` | ✓ | ✓ | ✓ |
| PowerPoint | `.pptx`, `.ppt` | ✓ | ✓ | ✓ |
| CSV | `.csv` | ✓ | ✓ | ✓ |
| Texte enrichi | `.rtf` | ✓ | ✓ | ✓ |
| OpenDocument | `.odt`, `.ods`, `.odp` | ✓ | ✓ | ✓ |
| Modèle ODF | `.ots` | ✓ | — | — |
| Apple iWork | `.pages`, `.numbers` | ✓ | — | — |
| Web / balisage | `.html`, `.htm`, `.xhtml` | ✓ | ✓ | ✓ |
| Markdown / texte | `.md`, `.markdown`, `.mdown`, `.mkd`, `.txt`, `.text` | ✓ | ✓ | ✓ |
| Livres numériques | `.epub` | ✓ | ✓ | ✓ |
| Images | `.png`, `.jpg`, `.jpeg`, `.gif`, `.bmp`, `.tiff`, `.tif`, `.webp`, `.heic`, `.heif` | ✓ | — | — |
| Vectoriel | `.svg` | ✓ | — | — |

Un ✓ signifie que l'endpoint accepte ce format en tant que fichier envoyé ; un — signifie qu'il ne l'accepte pas. Les images et le SVG se convertissent en PDF ici mais sont rejetés par les endpoints à sortie Markdown (l'OCR d'image est un pipeline distinct). Les limites de taille par fichier dépendent de l'offre (Gratuit : 5 Mo) sur les trois endpoints.

---

## Exemples de code

### curl (clé privée)

```bash
curl -X POST https://api.enconvert.com/v1/convert/anything-to-pdf \
  -H "X-API-Key: sk_live_your_private_key" \
  -F "file=@quarterly-report.docx"
```

### Python (clé privée)

```python
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 (clé privée)

```javascript
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 (clé privée)

```php
$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"];
```

---

## Réponses d'erreur

| Statut | Condition |
|--------|-----------|
| `400 Bad Request` | Type de fichier non pris en charge, fichier vide, ou document corrompu/illisible (par ex. une image invalide ou un EPUB malformé). |
| `400 Bad Request` | Les octets du fichier ne correspondent pas à son extension déclarée (incohérence de magic bytes). |
| `400 Bad Request` | JSON `pdf_options` invalide. |
| `401 Unauthorized` | Clé API / token JWT manquant ou invalide. |
| `402 Payment Required` | Limite mensuelle de conversions ou limite de stockage atteinte. |
| `403 Forbidden` | `/v1/convert/anything-to-pdf` ne figure pas dans les endpoints autorisés de la clé API. |
| `413 Payload Too Large` | L'envoi dépasse la limite de taille par fichier de votre offre. |
| `500 Internal Server Error` | La conversion a échoué de manière inattendue. |

La référence complète des codes de statut est dans [le guide des codes d'erreur](/fr/docs/error-codes).

---

## Limites

| Limite | Valeur |
|-------|-------|
| Taille maximale d'envoi | Selon l'offre (Gratuit : 5 Mo) |
| Conversions mensuelles | Selon l'offre (Gratuit : 100) |
| Rétention des fichiers | Selon l'offre (Gratuit : 1 heure) |
| Options de géométrie de page | Non appliquées sur cet endpoint (uniquement `grayscale`) |
| Formats d'entrée pris en charge | Voir le tableau [formats d'entrée pris en charge](#supported-input-formats) |

---

## Foire aux questions

### Comment convertir n'importe quel fichier en PDF avec une API ?

Envoyez une requête `POST` à `/v1/convert/anything-to-pdf` en `multipart/form-data` avec votre fichier dans le champ `file` et votre clé dans l'en-tête `X-API-Key`. L'endpoint détecte automatiquement le format, le rend en PDF et renvoie un JSON contenant une `presigned_url` vers le `.pdf` finalisé. Vous n'avez pas besoin de lui indiquer le type d'entrée — l'extension et les magic bytes en décident.

### Quels formats de fichiers puis-je convertir en PDF ?

Word (`.docx`, `.doc`), Excel (`.xlsx`, `.xls`), PowerPoint (`.pptx`, `.ppt`), OpenDocument (`.odt`, `.ods`, `.odp`, `.ots`), Apple Pages et Numbers, RTF, CSV, HTML/XHTML, Markdown, texte brut, EPUB, images (`.png`, `.jpg`, `.jpeg`, `.gif`, `.bmp`, `.tiff`, `.webp`, `.heic`) et SVG. Un PDF existant est accepté et renvoyé tel quel. La liste complète avec les remarques propres à chaque format est dans le tableau [formats d'entrée pris en charge](#supported-input-formats).

### Puis-je convertir Word, Excel ou PowerPoint en PDF via l'API ?

Oui. Les documents Office — modernes (`.docx`, `.xlsx`, `.pptx`) et hérités (`.doc`, `.xls`, `.ppt`) — sont rendus avec LibreOffice, en préservant les styles, tableaux et la mise en page, avec une page par diapositive pour les présentations. Envoyez le fichier et vous récupérez le PDF.

### Comment convertir une image telle que PNG, JPEG ou HEIC en PDF ?

Envoyez-la au même endpoint. Chaque image devient un PDF d'une seule page, avec la transparence aplatie sur un fond blanc ; les photos iPhone `.heic`/`.heif` et les vecteurs `.svg` sont également pris en charge. Pour une image multi-trames (GIF animé ou TIFF multi-pages), la première image est utilisée.

### Puis-je définir une taille de page, des marges ou des en-têtes personnalisés sur le PDF ?

Pas sur cet endpoint — seul `grayscale` est pris en compte, car le format d'entrée est détecté automatiquement et chaque type utilise un moteur de rendu différent. Pour un contrôle complet de la page (taille de page, marges, orientation, en-têtes, pieds de page), envoyez du HTML ou du Markdown aux endpoints [html-to-pdf](/fr/docs/endpoints/documents-to-pdf/html-to-pdf) ou markdown-to-pdf, qui acceptent le schéma `pdf_options` complet.

### En quoi est-ce différent des endpoints doc-to-pdf ou html-to-pdf ?

Les endpoints spécifiques à chaque format acceptent chacun un seul type d'entrée et exposent des options complètes de géométrie de page ; `anything-to-pdf` les accepte tous derrière un seul appel et détecte automatiquement le format, ce qui est idéal lorsque l'entrée peut être n'importe quoi. Utilisez un endpoint spécifique lorsque vous connaissez le type et souhaitez un contrôle des pages ; utilisez celui-ci lorsque vous voulez un chemin d'envoi unique pour de nombreux formats.
