Web app
Nothing to install. Log in, upload a PDF and download your images from any computer.
- Works in your browser
- History and credit log in your dashboard
- Images deleted after one hour
Convert PDF pages to sharp JPG images online, in the Windows app, or through a REST API. One account and one credit balance work in all three.
Log in with the same account everywhere. Your plan and credits follow you.
Nothing to install. Log in, upload a PDF and download your images from any computer.
Install it, log in with your email and password, and convert on your own PC.
Add PDF to JPG conversion to your own product with an API key from your dashboard.
Each conversion appears in your dashboard with where it ran and what it cost, whether it came from the web, the desktop app or an API key.
| When | Used from | File | Credits | Balance |
|---|---|---|---|---|
| 2 Nov, 15:42 | API | statement.pdf | −18 | 946 |
| 2 Nov, 12:10 | Desktop | Desktop conversion | −20 | 964 |
| 1 Nov, 18:05 | Web | invoice-march.pdf | −16 | 984 |
Upload a PDF, follow the job, download the images. The PHP, Python and Node.js examples are tested against the real API.
<?php
$api = getenv('RASTERNIVO_API_URL') ?: 'https://rasternivo-api.swiftinfocorp.com/v1';
$ch = curl_init("$api/conversions");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('RASTERNIVO_API_KEY'),
'Idempotency-Key: ' . bin2hex(random_bytes(16)),
],
CURLOPT_POSTFIELDS => [
'options' => json_encode(['pages' => '1-3', 'dpi' => 300, 'zip' => true]),
'file' => new CURLFile('report.pdf', 'application/pdf'),
],
]);
$job = json_decode(curl_exec($ch), true);
echo $job['id'], ' ', $job['state'], "\n";import json
import os
import uuid
import requests
API = os.environ.get("RASTERNIVO_API_URL", "https://rasternivo-api.swiftinfocorp.com/v1")
with open("report.pdf", "rb") as pdf:
job = requests.post(
f"{API}/conversions",
headers={
"Authorization": "Bearer " + os.environ["RASTERNIVO_API_KEY"],
"Idempotency-Key": str(uuid.uuid4()),
},
data={"options": json.dumps({"pages": "1-3", "dpi": 300, "zip": True})},
files={"file": ("report.pdf", pdf, "application/pdf")},
).json()
print(job["id"], job["state"])// Node.js 20 or newer: no packages needed.
import { randomUUID } from "node:crypto";
import { readFile } from "node:fs/promises";
const API = process.env.RASTERNIVO_API_URL ?? "https://rasternivo-api.swiftinfocorp.com/v1";
const form = new FormData();
form.append("options", JSON.stringify({ pages: "1-3", dpi: 300, zip: true }));
form.append("file", new Blob([await readFile("report.pdf")], { type: "application/pdf" }), "report.pdf");
const res = await fetch(`${API}/conversions`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.RASTERNIVO_API_KEY}`,
"Idempotency-Key": randomUUID(),
},
body: form,
});
const job = await res.json();
console.log(job.id, job.state);curl -X POST "https://rasternivo-api.swiftinfocorp.com/v1/conversions" \
-H "Authorization: Bearer $RASTERNIVO_API_KEY" \
-H "Idempotency-Key: report-2026-11-02-001" \
-F 'options={"pages": "1-3", "dpi": 300, "zip": true}' \
-F "file=@report.pdf;type=application/pdf"The desktop app converts on your computer and never uploads the file. Only the page count and DPI are sent, to use your credits.
Uploaded PDFs are deleted when the job finishes. Images are deleted after one hour, and download links expire after 15 minutes.
Cloud conversions run in isolated workers with no internet access and strict resource limits.
A PDF password is encrypted while the job waits and erased when it ends. It is never logged or returned.
100 credits and no card. When the trial ends you move to the Free plan and are not charged.