| name | convert-pdf-to-png |
| description | Use when needing to convert PDF pages to PNG images for preview, comparison, or image processing. |
Convert PDF to PNG
Convert PDF file pages to PNG images.
Backend Selection
Try system tools first (better rendering for complex PDFs), fall back to the JS script.
Backends you can try:
- magick (ImageMagick) - Linux/MacOS
- mutool (MuPDF) - Linux/MacOS
- pdftoppm (Poppler) - Linux/MacOS
- sips (Scriptable Image Processing System) - MacOS Only
- JS fallback (pdfjs) - under
<CURRENT_SKILL_DIR>/scripts/ directory.
NOTICE: All backends should output <pdf-name>_page_<N>.png in the target directory.
System Backend Examples
magick -density 144 paper.pdf -quality 90 paper_page_%d.png
mutool convert -o paper_page_%d.png -O resolution=144 paper.pdf
pdftoppm -png -r 144 paper.pdf paper_page
sips -s format png paper.pdf --out paper_page_1.png
Different backends produce slightly different filename patterns (0-based vs 1-based, padding, separator).
Rename after conversion if the downstream consumer requires strict <pdf-name>_page_<N>.png format.
JS Script Prerequisites
Dependencies are in <CURRENT_SKILL_DIR>/scripts/package.json. Install on first use:
cd skills/convert-pdf-to-png/scripts && bun install
JS Script Quick Start
SCRIPT_DIR=skills/convert-pdf-to-png/scripts
bun $SCRIPT_DIR/convert-pdf-to-png.mjs paper.pdf
bun $SCRIPT_DIR/convert-pdf-to-png.mjs paper.pdf --output-dir ./output
bun $SCRIPT_DIR/convert-pdf-to-png.mjs paper.pdf --pages 1,3,5 --scale 3
bun $SCRIPT_DIR/convert-pdf-to-png.mjs protected.pdf --password "secret"
JS Script CLI Options
| Option | Default | Description |
|---|
--output-dir <dir> | Same as PDF | Output directory for PNG files |
--scale <number> | 2.0 | Viewport scale factor (higher = better quality, larger files) |
--pages <list> | all | Comma-separated 1-based page numbers |
--password <string> | - | Password for encrypted PDF |
Output
Filenames follow the pattern: <pdf-name>_page_<N>.png
Common Issues
| Issue | Solution |
|---|
| Complex figures render as blank (pdfjs) | Use magick (ImageMagick) or mutool (MuPDF) instead |
Cannot find module 'pdf-to-png-converter' | cd skills/convert-pdf-to-png/scripts && bun install |
| Poor text quality | Increase --scale / DPI (try 3.0 / 216) |
| Large PDF causes OOM | Convert specific pages with --pages instead of all |
| Encrypted PDF fails | Provide --password (JS) or -p (mutool) / -upw (pdftoppm) |