API PDF vers JPEG#
Convertissez un PDF en images JPEG avec l'endpoint POST /v1/convert/pdf-to-jpeg, qui restitue chaque page du PDF sous forme d'image raster. Les PDF d'une seule page renvoient directement un fichier JPEG ; les PDF multipages renvoient une archive ZIP contenant un JPEG par page. Les réponses renvoient des octets bruts par défaut, ou des métadonnées JSON avec une URL de téléchargement présignée lorsque direct_download=false.
Endpoint#
POST /v1/convert/pdf-to-jpeg
Content-Type : multipart/form-data
Entrée acceptée : fichiers .pdf
Format de sortie : .jpeg (image/jpeg) pour les PDF d'une seule page, .zip (application/zip) pour les PDF multipages
Authentification#
Nécessite soit une clé API privée, soit un jeton JWT provenant 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 | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|---|
file |
file | Oui | -- | Le fichier .pdf à convertir. |
output_filename |
string |
Non | Nom du fichier d'entrée | Nom de fichier de sortie personnalisé. L'extension .jpeg ou .zip est ajoutée automatiquement. |
direct_download |
boolean |
Non | true |
Si true, renvoie les octets bruts du fichier. Si false, renvoie des métadonnées JSON avec une URL de téléchargement présignée. |
Détails de la conversion#
- Utilise PyMuPDF pour restituer les pages du PDF en images raster à une résolution 2x (144 DPI)
- Utilise Pillow pour l'encodage JPEG à qualité maximale
- La transparence est aplatie sur un fond blanc (le JPEG ne prend pas en charge le canal alpha)
- Les PDF d'une seule page renvoient directement un fichier
.jpeg - Les PDF multipages renvoient une archive
.zipcontenantpage_1.jpeg,page_2.jpeg, etc. - Le format de sortie est déterminé automatiquement selon le nombre de pages
Réponse#
Téléchargement direct (direct_download=true, par défaut)#
PDF d'une seule page :
HTTP 200 OK
Content-Type: image/jpeg
Content-Disposition: inline; filename="document_20260405_123456789.jpeg"
Renvoie les octets bruts de l'image JPEG.
PDF multipages :
HTTP 200 OK
Content-Type: application/zip
Content-Disposition: inline; filename="document_20260405_123456789.zip"
Renvoie une archive ZIP contenant un JPEG par page.
Réponse avec métadonnées (direct_download=false)#
{
"presigned_url": "https://spaces.example.com/...",
"object_key": "env/files/{project_id}/pdf-to-jpeg/document_20260405_123456789.jpeg",
"filename": "document_20260405_123456789.jpeg",
"file_size": 45678,
"conversion_time_seconds": 1.2
}
Exemples de code#
Python#
import requests
with open("document.pdf", "rb") as f:
response = requests.post(
"https://api.enconvert.com/v1/convert/pdf-to-jpeg",
headers={"X-API-Key": "sk_your_private_key"},
files={"file": ("document.pdf", f)}
)
# Check if response is a ZIP (multi-page) or JPEG (single-page)
content_type = response.headers.get("Content-Type", "")
if "zip" in content_type:
with open("document_pages.zip", "wb") as out:
out.write(response.content)
else:
with open("document_20260405_123456789.jpeg", "wb") as out:
out.write(response.content)
Node.js#
const form = new FormData();
form.append("file", fs.createReadStream("document.pdf"));
const response = await fetch("https://api.enconvert.com/v1/convert/pdf-to-jpeg", {
method: "POST",
headers: { "X-API-Key": "sk_your_private_key" },
body: form
});
const contentType = response.headers.get("content-type");
const buffer = Buffer.from(await response.arrayBuffer());
if (contentType.includes("zip")) {
fs.writeFileSync("document_pages.zip", buffer);
} else {
fs.writeFileSync("document_20260405_123456789.jpeg", buffer);
}
PHP#
$ch = curl_init("https://api.enconvert.com/v1/convert/pdf-to-jpeg");
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.pdf")]
]);
$output = curl_exec($ch);
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
curl_close($ch);
if (str_contains($contentType, "zip")) {
file_put_contents("document_pages.zip", $output);
} else {
file_put_contents("document_20260405_123456789.jpeg", $output);
}
Go#
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("file", "document.pdf")
file, _ := os.Open("document.pdf")
io.Copy(part, file)
writer.Close()
req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/pdf-to-jpeg", body)
req.Header.Set("Content-Type", writer.FormDataContentType())
req.Header.Set("X-API-Key", "sk_your_private_key")
resp, _ := http.DefaultClient.Do(req)
Réponses d'erreur#
| Statut | Condition |
|---|---|
400 Bad Request |
Le fichier n'est pas un fichier .pdf |
400 Bad Request |
Le PDF ne contient aucune page |
400 Bad Request |
Échec de la conversion de l'image (PDF corrompu ou non pris en charge) |
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 forfait |
Limites#
| Limite | Valeur |
|---|---|
| Taille de fichier maximale | Selon le forfait (Founding : 5 MB) |
| Résolution de rendu | 144 DPI (échelle 2x) |
| Qualité de sortie | Maximale (qualité JPEG 100) |
| Conversions mensuelles | Selon le forfait |
Questions fréquentes#
Comment convertir un PDF en images JPEG avec une API REST ?#
Envoyez une requête POST multipart/form-data à /v1/convert/pdf-to-jpeg avec le fichier .pdf dans le champ file, authentifiée via X-API-Key ou un Bearer JWT. Vous récupérez les octets bruts du fichier par défaut, ou définissez direct_download=false pour recevoir du JSON avec une URL de téléchargement présignée.
Comment l'API gère-t-elle les PDF multipages ?#
Les PDF d'une seule page renvoient directement un fichier .jpeg, tandis que les PDF multipages renvoient une archive .zip contenant page_1.jpeg, page_2.jpeg, et ainsi de suite. Le format de sortie est déterminé automatiquement à partir du nombre de pages, donc vérifiez l'en-tête Content-Type (image/jpeg ou application/zip) lors de l'enregistrement de la réponse.
À quelle résolution les pages du PDF sont-elles restituées ?#
Les pages sont restituées avec PyMuPDF à une résolution 2x (144 DPI) et encodées en JPEG à qualité maximale (100). Aucun de ces réglages n'est configurable.
La conversion PDF vers JPEG conserve-t-elle la transparence ?#
Non. Le JPEG ne prend pas en charge de canal alpha, donc la transparence est aplatie sur un fond blanc.
Pourquoi l'endpoint PDF vers JPEG renvoie-t-il une erreur 400 ?#
400 Bad Request est renvoyé lorsque le fichier n'est pas un .pdf, lorsque le PDF ne contient aucune page, ou lorsque la conversion échoue parce que le PDF est corrompu ou non pris en charge.