Ein Frontend-Entwickler erhält ein 40-seitiges Markenhandbuch als PDF und muss drei bestimmte Seiten in ein Figma-Board einfügen. Ein Support-Mitarbeiter will ein Diagramm aus einem Datenblatt in einen Slack-Thread einfügen. Ein Anwalt muss eine unterschriebene Vertragsseite an eine E-Mail anhängen, ohne die gesamte Datei zu versenden.
PDF ist für Dokumente mit festem Layout gebaut. Das Web, Bildbearbeitungsprogramme und Chat-Apps arbeiten mit Pixeln. Eine PDF-Seite in ein Bild umzuwandeln schließt diese Lücke, aber die gewählte Methode beeinflusst Ausgabequalität, Dateigröße und den Grad der Kontrolle.
Warum PDF für diese Aufgabe gleichzeitig ideal und ärgerlich ist
PDF speichert Seiten als Strom von Zeichenbefehlen: platziere diese Glyphe, zeichne diesen Vektor, rendere dieses Bild in dieser Größe. Das macht es auflösungsunabhängig und visuell konsistent. Es bedeutet aber auch, dass ein PDF kein Bild ist. Um eins daraus zu machen, muss etwas diese Befehle auf eine Rasterfläche rendern.
Vorteile:
- Text und Vektoren bleiben bei jedem Zoomlevel scharf, weil sie mathematisch beschrieben werden und nicht als Pixel gespeichert sind.
- Eine einzelne PDF-Datei kann Hunderte Seiten enthalten.
- Schriftarten, Farbprofile und Anmerkungen reisen mit dem Dokument mit.
Nachteile:
- PDF-Renderer interpretieren Inhalte unterschiedlich. Dieselbe Seite sieht in Adobe Acrobat, Preview, Chrome oder einer Headless-Bibliothek leicht anders aus.
- Gescannte PDFs sind nur Bilder in PDF-Verpackung. Ihre Konvertierung bedeutet Neukodierung, was Artefakte oder Dateibloat erzeugen kann.
- Komplexe PDFs mit Transparenz, Ebenen oder interaktiven Formularen können beim Flatten unvorhersehbar reagieren.
- Seitenmaße variieren. Eine US-Letter-Seite bei 72 DPI ist 612 × 792 Pixel. Bei 300 DPI sind es 2550 × 3300. Wer die Auflösung nicht angibt, riskiert unbrauchbare Ergebnisse.
Wozu PDFs typischerweise konvertiert werden
Die meisten Konvertierungen zielen auf eines dieser drei Ausgabeformate. Jedes hat eine andere Aufgabe.
| Format | Am besten geeignet für | Kompromiss |
|---|---|---|
| JPG | Fotos, Vorschaubilder, E-Mail-Anhänge, Web-Galerien | Verlustbehaftet, aber kleine Dateigrößen |
| PNG | Screenshots, Diagramme, alles mit Transparenz | Verlustfrei, für Fotos größer als JPG |
| WebP | Moderne Webseiten, Apps, überall wo Bandbreite zählt | Kleiner als JPG/PNG, etwas weniger universell |
Dazu kommen praktische Dimensionen:
- Einzelseite vs. Stapel. Eine Seite ist einfach. Ein Ordner voller Rechnungen erfordert Automatisierung.
- DPI. 150 DPI reichen für Thumbnails. 300 DPI ist Standard für Druck und OCR. 600 DPI sind nur dann nötig, wenn feine Details stark vergrößert werden.
- Farbraum. RGB ist für Bildschirme unproblematisch. CMYK-PDFs, die naiv nach RGB konvertiert werden, können Farbverschiebungen zeigen.
Den richtigen Ansatz wählen
Das passende Werkzeug hängt davon ab, was optimiert werden soll.
Schnelle, browserbasierte Konvertierung
Wer nur eine Seite als JPG, PNG oder WebP benötigt und die Datei nicht so sensibel ist, dass ein Server nötig wäre, ist mit einem Browser-basierten Konverter am schnellsten. Unsere Werkzeuge PDF zu JPG, PDF zu PNG und PDF zu WebP rendern das PDF lokal. Die Datei verlässt niemals das Gerät. Das ist relevant für Verträge, Ausweise und medizinische Unterlagen.
Kommandozeilen-Stapelverarbeitung
Für Ordner voller PDFs oder CI-Pipelines ist ein Kommandozeilen-Werkzeug die bessere Wahl. Es bietet reproduzierbare Ergebnisse, DPI-Kontrolle und Skriptautomatisierung.
Konvertierung innerhalb einer Anwendung
Wenn die Konvertierung Teil eines Produkts ist, ist der Aufruf einer Bibliothek meist sauberer als das Shellen eines CLI-Tools. Das entfernt eine externe Abhängigkeit und ermöglicht Fehlerbehandlung im Stil der eigenen Codebasis.
Konvertierung unter Windows
Adobe Acrobat
- Öffne das PDF und navigiere zur gewünschten Seite.
- Wähle Datei > Exportieren in > Bild > JPEG/PNG/TIFF.
- Lege die Ausgabeauflösung im Exportdialog fest.
- Speichern.
Acrobat liefert verlässliche Ergebnisse, ist aber nicht kostenlos und ohne das kostenpflichtige SDK nicht skriptbar.
PDF-XChange Editor
Eine schlankere Alternative mit einer kostenlosen Variante. Unter Datei > Exportieren > Seiten als Bilder exportieren lassen sich Format, DPI und Seitenbereich festlegen.
PowerShell mit pdftoppm
Installiere Poppler für Windows, dann verwende pdftoppm aus PowerShell:
pdftoppm -jpeg -r 300 input.pdf output
Das erzeugt output-1.jpg, output-2.jpg und so weiter – eine Datei pro Seite, bei 300 DPI.
Für PNG mit transparentem Hintergrund:
pdftoppm -png -r 300 input.pdf output
Für eine einzelne Seite:
pdftoppm -jpeg -r 300 -f 1 -l 1 input.pdf output
Die Flags -f und -l legen die erste und letzte Seite fest.
PowerShell mit ImageMagick
ImageMagick kann PDFs rendern, delegiert unter Windows aber in der Regel an Ghostscript:
magick -density 300 input.pdf[0] output.jpg
[0] bedeutet die erste Seite. Ohne diesen Index versucht ImageMagick möglicherweise, ein mehrseitiges Bild zu erzeugen.
Konvertierung unter macOS
Preview
- Öffne das PDF in Preview.
- Wähle das gewünschte Seiten-Miniaturbild aus.
- Wähle Datei > Exportieren, wähle das Format und lege die Auflösung fest.
Preview ist schnell und privat, aber auf eine Seite pro Durchgang beschränkt.
Terminal mit sips
macOS liefert sips mit, aber es rendert PDF-Text nicht gut. Es eignet sich nur für PDFs, die bereits Bitmaps enthalten:
sips -s format jpeg input.pdf --out output.jpg
Für echtes PDF-Rendering installiere Poppler über Homebrew:
brew install poppler
pdftoppm -jpeg -r 300 input.pdf output
Automator-Schnellaktion
In Automator lässt sich ein Rechtsklick-Service bauen, der pdftoppm auf jedes ausgewählte PDF anwendet. Das ist praktisch, wenn Seiten regelmäßig konvertiert werden und die Befehle nicht jedes Mal neu eingetippt werden sollen.
Konvertierung unter Linux
Poppler ist unter Linux meist die beste Wahl.
sudo apt install poppler-utils
pdftoppm -jpeg -r 300 input.pdf output
pdftoppm -png -r 300 input.pdf output
Für WebP-Ausgabe zuerst in PNG konvertieren, dann cwebp verwenden:
pdftoppm -png -r 300 input.pdf temp
cwebp temp-1.png -o output.webp
Stapelverarbeitung
Wenn ein Ordner voller PDFs vorliegt und je eine Datei pro erster Seite gewünscht ist:
for f in *.pdf; do
pdftoppm -jpeg -r 300 -f 1 -l 1 "$f" "${f%.pdf}"
done
ImageMagick
ImageMagick funktioniert unter Linux, ist für PDFs aber oft langsamer, weil es über Ghostscript rasterisiert:
magick -density 300 input.pdf[0] -quality 90 output.jpg
-density muss vor dem Lesen des PDFs gesetzt werden. Danach hat es keine Wirkung.
Konvertierung mit Code
TypeScript / Node.js
Mit pdfjs-dist lassen sich Seiten auf ein Canvas rendern und dann als Bilddaten exportieren.
import * as pdfjsLib from "pdfjs-dist"
import { createCanvas } from "canvas"
import fs from "fs"
async function pdfPageToPng(
pdfPath: string,
pageNumber: number,
outputPath: string,
scale: number = 2
) {
const data = new Uint8Array(fs.readFileSync(pdfPath))
const pdf = await pdfjsLib.getDocument({ data }).promise
const page = await pdf.getPage(pageNumber)
const viewport = page.getViewport({ scale })
const canvas = createCanvas(viewport.width, viewport.height)
const context = canvas.getContext("2d")
await page.render({ canvasContext: context, viewport }).promise
const buffer = canvas.toBuffer("image/png")
fs.writeFileSync(outputPath, buffer)
await pdf.destroy()
}
await pdfPageToPng("input.pdf", 1, "output.png", 2)
Der Wert scale korrespondiert in etwa mit DPI: ein Wert von 2 bei 72 DPI ergibt 144 DPI. Für 300 DPI entspricht das etwa 4.17.
Im Browser führt unser PDF zu PNG Konverter denselben Render-auf-Canvas-Schritt aus, ohne die Datei zu übertragen.
PHP
PHP kann pdftoppm aufrufen oder Bibliotheken wie spatie/pdf-to-image verwenden, die ImageMagick kapseln:
<?php
use Spatie\PdfToImage\Pdf;
$pdf = new Pdf('input.pdf');
$pdf->setPage(1)
->setOutputFormat('png')
->saveImage('output.png');
Wer keine Abhängigkeit hinzufügen möchte, ruft Poppler direkt auf:
<?php
function pdfPageToPng(string $input, int $page, string $output, int $dpi = 300): void {
$cmd = sprintf(
'pdftoppm -png -r %d -f %d -l %d %s %s',
$dpi,
$page,
$page,
escapeshellarg($input),
escapeshellarg($output)
);
exec($cmd);
}
pdfPageToPng('input.pdf', 1, 'output', 300);
Das schreibt output-1.png. Vor dem Produktiveinsatz sollte eine eigene Fehlerbehandlung ergänzt werden.
Go
Go hat keinen eingebauten PDF-Renderer, aber github.com/gen2brain/go-fitz kapselt MuPDF:
package main
import (
"image/jpeg"
"os"
"github.com/gen2brain/go-fitz"
)
func main() {
doc, err := fitz.New("input.pdf")
if err != nil {
panic(err)
}
defer doc.Close()
img, err := doc.Image(0)
if err != nil {
panic(err)
}
out, err := os.Create("output.jpg")
if err != nil {
panic(err)
}
defer out.Close()
if err := jpeg.Encode(out, img, &jpeg.Options{Quality: 90}); err != nil {
panic(err)
}
}
go-fitz liefert Bilder in der Standard-Renderauflösung des PDFs. Wer DPI-Kontrolle braucht, sollte die Bibliotheksdokumentation konsultieren.
Java
Apache PDFBox ist der Standard für Java-PDF-Arbeiten.
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class PdfToImage {
public static void main(String[] args) throws IOException {
try (PDDocument document = PDDocument.load(new File("input.pdf"))) {
PDFRenderer renderer = new PDFRenderer(document);
BufferedImage image = renderer.renderImageWithDPI(0, 300);
ImageIO.write(image, "png", new File("output.png"));
}
}
}
Maven-Abhängigkeit:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>3.0.2</version>
</dependency>
renderImageWithDPI nimmt einen nullbasierten Seitenindex und einen DPI-Wert.
Python
Python macht das mit pymupdf oder pdf2image einfach.
Mit pymupdf:
import fitz
doc = fitz.open("input.pdf")
page = doc[0]
mat = fitz.Matrix(2, 2)
pix = page.get_pixmap(matrix=mat)
pix.save("output.png")
Die Matrix steuert den Maßstab. Für etwa 300 DPI aus einem 72-DPI-PDF verwendet man fitz.Matrix(300/72, 300/72).
Mit pdf2image, das Poppler kapselt:
from pdf2image import convert_from_path
images = convert_from_path("input.pdf", dpi=300, first_page=1, last_page=1)
images[0].save("output.jpg", "JPEG", quality=90)
pdf2image ist komfortabel, erfordert aber ein installiertes Poppler auf dem System.
Häufige Fallstricke
- DPI vergessen. Standard-Rendering für PDFs liegt oft bei 72 oder 96 DPI. Bei dieser Auflösung wirkt Text unscharf. Wer Qualität braucht, gibt immer die Ausgabe-DPI an.
- Farbprofil ignorieren. Ein CMYK-PDF, das ohne Profil nach RGB konvertiert wird, kann ausgewaschen oder übersättigt wirken.
- Gescannte PDFs erneut kodieren. Wenn das PDF bereits ein JPEG-Scan ist, macht eine Konvertierung nach PNG verlorene Details nicht wieder gut. Die Datei wird nur größer.
- Schriftartenersetzung. Headless-Server haben oft nicht alle im PDF eingebetteten Schriftarten installiert. Der Renderer ersetzt sie, und das Layout bricht. Schriftarten beim Erstellen des PDFs einbetten vermeidet das.
- Seitenzählung um eins daneben. Code-APIs verwenden meist nullbasierte Seitenindizes. Kommandozeilen-Werkzeuge meist einsbasierte.
Wann was verwenden
- Einmalige private Nutzung: Preview unter macOS, ein PDF-Reader unter Windows oder ein Browser-Konverter.
- Stapelverarbeitung auf einem Server:
pdftoppmoderpdf2image. - Innerhalb eines Produkts: Apache PDFBox für Java,
pymupdffür Python,pdfjs-distfür TypeScript. - Datenschutzsensible Dateien: Ein Browser-basiertes Werkzeug verwenden, damit das PDF das Gerät nicht verlässt.
Wer den schnellsten Weg ohne Installation sucht, kann unsere Konverter PDF zu JPG, PDF zu PNG und PDF zu WebP nutzen. Sie laufen komplett im Browser.



