Back to API Docs
POST
https://app.alternapdf.com/api/v1/convert/pdf-to-imagePDF to Image
Render PDF pages as high-quality images. Supports PNG, JPEG, and WebP output formats with configurable DPI, quality, and dimensions. Request a single page to receive an image file directly, or a page range to receive a ZIP archive containing all rendered pages.
Content-Type: multipart/form-data
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
file required | file | — | The PDF file to render as images. |
page_number | integer | 1 | Render a single specific page. Use this for single-page output. |
start_page | integer | — | First page of a range to render. Used with end_page for multi-page output (ZIP). |
end_page | integer | — | Last page of a range to render. Used with start_page for multi-page output (ZIP). |
image_format | string | PNG | Output image format. Options: PNG, JPEG, WEBP. |
dpi | integer | 150 | Resolution in dots per inch. Options: 72, 150, 300. |
quality | integer | 85 | Image quality (1-100). Applies to JPEG and WebP formats. |
transparent_background | boolean | false | Use a transparent background instead of white. PNG format only. |
custom_width | integer | — | Custom output width in pixels. Aspect ratio is maintained if only width is set. |
custom_height | integer | — | Custom output height in pixels. Aspect ratio is maintained if only height is set. |
Code Examples
cURL
# Single page - returns an image file
curl -X POST "https://app.alternapdf.com/api/v1/convert/pdf-to-image" \
-H "X-API-Key: YOUR_API_KEY" \
-F "file=@document.pdf" \
-F "page_number=1" \
-F "image_format=PNG" \
-F "dpi=300" \
--output page1.png
# Multiple pages - returns a ZIP archive
curl -X POST "https://app.alternapdf.com/api/v1/convert/pdf-to-image" \
-H "X-API-Key: YOUR_API_KEY" \
-F "file=@document.pdf" \
-F "start_page=1" \
-F "end_page=5" \
-F "image_format=JPEG" \
-F "quality=90" \
--output pages.zipPython
import requests
url = "https://app.alternapdf.com/api/v1/convert/pdf-to-image"
headers = {"X-API-Key": "YOUR_API_KEY"}
# Single page rendering
with open("document.pdf", "rb") as f:
files = {"file": ("document.pdf", f, "application/pdf")}
data = {
"page_number": "1",
"image_format": "PNG",
"dpi": "300",
}
response = requests.post(url, headers=headers, files=files, data=data)
with open("page1.png", "wb") as out:
out.write(response.content)
# Multi-page rendering (returns ZIP)
with open("document.pdf", "rb") as f:
files = {"file": ("document.pdf", f, "application/pdf")}
data = {
"start_page": "1",
"end_page": "5",
"image_format": "JPEG",
"quality": "90",
}
response = requests.post(url, headers=headers, files=files, data=data)
with open("pages.zip", "wb") as out:
out.write(response.content)JavaScript
import fs from "fs";
const formData = new FormData();
formData.append("file", fs.createReadStream("document.pdf"));
formData.append("page_number", "1");
formData.append("image_format", "PNG");
formData.append("dpi", "300");
const response = await fetch("https://app.alternapdf.com/api/v1/convert/pdf-to-image", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
},
body: formData,
});
const buffer = await response.arrayBuffer();
fs.writeFileSync("page1.png", Buffer.from(buffer));
// Multi-page rendering (returns ZIP)
const multiFormData = new FormData();
multiFormData.append("file", fs.createReadStream("document.pdf"));
multiFormData.append("start_page", "1");
multiFormData.append("end_page", "5");
multiFormData.append("image_format", "JPEG");
multiFormData.append("quality", "90");
const multiResponse = await fetch("https://app.alternapdf.com/api/v1/convert/pdf-to-image", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
},
body: multiFormData,
});
const zipBuffer = await multiResponse.arrayBuffer();
fs.writeFileSync("pages.zip", Buffer.from(zipBuffer));Response
The response format depends on the number of pages requested:
Single Page
Returns the image file directly as a binary response.
| Header | Value |
|---|---|
Content-Type | image/png, image/jpeg, or image/webp |
Content-Disposition | attachment; filename="page_1.png" |
Multiple Pages
Returns a ZIP archive containing one image per page.
| Header | Value |
|---|---|
Content-Type | application/zip |
Content-Disposition | attachment; filename="document_pages.zip" |