Skip to main content
FormatDrop
How-To Guide

How to Extract Images from a PDF (Free, Full Quality)

When you need an image out of a PDF, screenshotting it is the wrong move — you'll get whatever resolution your screen happens to be showing, with JPEG compression baked into the screenshot tool, and you'll lose any color profile or transparency the source had. Proper image extraction pulls the original binary stream out of the PDF: a 4000×3000 photo embedded in the PDF comes out as a 4000×3000 file, byte-for-byte identical to what was put in. This guide covers every PDF image extraction method (online, command line, Python, Preview, Acrobat) plus the difference between 'extract images' (pull out the embedded files) and 'convert PDF to images' (render each page as a picture) — they sound similar but solve completely different problems and produce wildly different results.

Quick answer

To extract images from a PDF, run `pdfimages -all input.pdf img-` on the command line. It pulls the original photos out at full resolution. That is not the same as converting the PDF to JPG, which renders each whole page as one flat picture.

  • Install it — `brew install poppler` on a Mac, `apt install poppler-utils` on Linux.
  • Full quality — a 4000×3000 photo comes out at 4000×3000, and JPEG photos come out unchanged.
  • Scanned PDFs — most scans store each page as one image, so you get page scans, not separate photos.
  • Want page images instead?convert each PDF page to PNG or to JPG in your browser. It runs locally.

Method 1: Convert PDF to Images online (free, in your browser)

  1. 1

    Open the FormatDrop PDF to PNG converter

    Open formatdrop.com/pdf-to-png in any modern browser. Want JPG files instead? Use formatdrop.com/pdf-to-jpg. Both pages run locally — your PDF stays on your device, no server upload. Works on Mac, Windows, Linux, iPhone, and Android with no install.

    Go to converter
  2. 2

    Upload your PDF file

    Drop your PDF onto the upload area on that page. The free plan takes up to 5 files at once, 10 MB each; Pro raises the size limit to 500 MB per file. The tool renders each page of the PDF as an image at 150 DPI. That is a page-to-image conversion, not extraction of the original embedded files — for true extraction, use pdfimages (Method 2).

  3. 3

    Get one image per page

    The output format is fixed by the page you opened: pdf-to-png gives PNG files, pdf-to-jpg gives JPG files. There is no format menu inside the tool. Every page of the PDF becomes one image. PNG is the better pick when the pages hold text or line art; JPG is smaller for photo-heavy pages.

  4. 4

    Download as ZIP or individually

    A single-page PDF produces one image. A multi-page PDF produces one numbered image per page. Download them and open in any image viewer or editor.

Method 2Command line (pdfimages)

Method 2: Extract images with pdfimages (best for bulk and full quality)

pdfimages is the standard command-line image extractor from poppler-utils. Free, fast, preserves original encoding. The right tool when you have many PDFs to process or need bit-exact preservation of embedded images.

  1. Install. Mac: `brew install poppler`. Linux: `apt install poppler-utils` or `dnf install poppler-utils`. Windows: download from poppler.freedesktop.org or use WSL.
  2. Extract all images, preserving original format: `pdfimages -all input.pdf prefix-`. Output: prefix-000.jpg, prefix-001.png, prefix-002.jpg, etc. — each in its native format.
  3. Force PNG output (re-encodes JPEG sources): `pdfimages -png input.pdf prefix-`.
  4. Force JPEG output: `pdfimages -j input.pdf prefix-`.
  5. Show what's in the PDF without extracting: `pdfimages -list input.pdf` — produces a table of every image with size, color depth, and embedded format. Useful for choosing what to extract.
  6. Extract only from specific pages: `pdfimages -all -f 5 -l 10 input.pdf prefix-` — pages 5 through 10.
  7. Batch extract from every PDF in a folder: `for f in *.pdf; do mkdir "${f%.pdf}-images"; pdfimages -all "$f" "${f%.pdf}-images/img-"; done`.

Note: pdfimages preserves the original binary streams — no re-encoding, no quality loss. A 12-megapixel JPEG embedded in the PDF comes out as the same 12-megapixel JPEG. For pixel-perfect archival of source images, this is the gold standard.

Method 3Python (PyMuPDF)

Method 3: Extract images with Python and PyMuPDF (best for programmatic control)

PyMuPDF (also called fitz) is a Python wrapper around MuPDF. Excellent for scripted workflows, integration with other tools, and selective extraction based on size, format, or position.

  1. Install: `pip install PyMuPDF` (or `pip install pymupdf` for newer versions).
  2. Basic extraction: `import fitz; doc = fitz.open('input.pdf'); for page in doc: for img in page.get_images(): xref = img[0]; pix = fitz.Pixmap(doc, xref); pix.save(f'image-{xref}.png')`.
  3. Filter by size — only extract images >100KB: `if pix.size > 100000: pix.save(f'image-{xref}.png')`.
  4. Extract with original format: `extracted = doc.extract_image(xref); ext = extracted['ext']; open(f'image-{xref}.{ext}','wb').write(extracted['image'])`.
  5. Process every PDF in a folder: combine with `glob.glob('*.pdf')` and a loop. Easy to integrate into ETL pipelines.

Note: PyMuPDF is the most flexible option — you can filter, transform, or process extracted images programmatically. Slower than pdfimages but vastly more capable. For one-off extraction, pdfimages wins on simplicity.

Method 4macOS Preview

Method 4: Extract a single image using Preview (easy, no install)

Preview can extract individual images from PDFs by selecting and copying. Best for one-off needs where you don't want to install anything.

  1. Open the PDF in Preview (double-click).
  2. Tools → Show Inspector (⌘I). The Document Properties pane shows. Click the second tab (the document tab) for image details.
  3. For visual selection: Tools → Rectangular Selection (or press R). Drag a box around the image you want to extract.
  4. Edit → Copy (⌘C). Open Preview's File menu → New from Clipboard (⌘N). Save the new image as JPG, PNG, TIFF, or other format via File → Export.
  5. For PDFs where you need many images, Preview is impractical — switch to pdfimages or PyMuPDF.

Note: Preview's selection-based extraction re-renders the image at screen resolution, so you don't get the original embedded photo. For pixel-perfect extraction, use pdfimages or PyMuPDF instead. Preview is convenient for one image; awkward for many.

Method 5Adobe Acrobat Pro

Method 5: Adobe Acrobat Pro extraction (paid, but easiest GUI)

Acrobat Pro has a polished UI for image extraction with batch support. Costs money — $19.99/month on an annual plan billed monthly, or $29.99/month month-to-month — but if you already have Adobe Creative Cloud, it's the easiest GUI approach.

  1. Open the PDF in Acrobat Pro.
  2. Tools → Export PDF → Image → choose JPEG, PNG, or TIFF.
  3. Set 'Export all images' option. Click Export.
  4. Acrobat saves every embedded image to a folder of your choice.
  5. For more control, use the Tools → Edit PDF interface to right-click individual images → Save Image As.

Note: Acrobat Pro is the easiest option if you already pay for it. For one-off use, Preview or pdfimages is free and fine. Acrobat's main advantage is GUI batch export with good defaults.

When you need to convert PDF to Images

  • 1

    Recovering original photos from a designer's PDF deliverable

    Your designer sent a PDF mockup. You want the source photos to use elsewhere. pdfimages -all extracts every embedded image at original quality — typically the same JPEGs the designer dropped into Illustrator or InDesign.

  • 2

    Building a dataset for ML or analysis from a PDF report

    Annual reports, scientific papers, and technical documents often have charts and diagrams as embedded images. Extracting them programmatically (with PyMuPDF) feeds an image classifier, archive, or visualization pipeline.

  • 3

    Recreating a print layout in a different tool

    Need to redesign a PDF brochure in Figma or Canva? Extract the embedded images first, then drop them into the new tool. Beats the pixelated 'paste from PDF' workflow.

  • 4

    Extracting product photos from an e-commerce PDF catalog

    Some suppliers send catalogs as PDF. Bulk-extract all product photos with pdfimages, run them through a script that pulls product names from filenames, end up with a usable image library.

  • 5

    Pulling diagrams out of a textbook or technical manual

    A textbook PDF has 200 figures you want to study or reuse. Don't screenshot each one — pdfimages extracts all in seconds at full resolution. For copyright-sensitive use, this is for personal study; redistribution requires permission.

Troubleshooting common PDF to Images problems

pdfimages outputs only one big image per page (instead of individual images)

Your PDF was created from page-flattened scans or rendered exports — each page is one big image, not separate embedded images. There's no way to extract sub-regions because the source PDF doesn't have them as separate objects. Solutions: (1) If you just want each page as an image, use `pdftoppm -jpeg -r 300 input.pdf page` instead, which renders pages as full-page JPGs. (2) For sub-region extraction, use Acrobat Pro's image-editing tools to select and crop. (3) If the page is a single embedded image, extract it whole and crop in Photoshop afterward.

Extracted images are smaller than expected (low resolution)

Check the original PDF — the embedded images may genuinely be low-resolution. Use `pdfimages -list input.pdf` to see the actual width × height of every embedded image. If the source PDF was made from web-resolution images (e.g., 800×600), you can't extract higher resolution than that. To get higher quality, find the original source images outside the PDF.

Many duplicate images extracted (every page header, footer, watermark)

Your PDF reuses the same image across pages (logo on every page, etc.). pdfimages extracts each instance — so you get the same logo 50 times. Two solutions: (1) Use `fdupes -d ./output-dir` after extraction to find and remove duplicates by content hash. (2) In PyMuPDF, track xrefs (image references) — same xref means same image; only extract each xref once.

Images come out with strange color shifts (oversaturated, too dark, etc.)

PDFs can use various color spaces (RGB, CMYK, calibrated profiles). If the embedded image is CMYK and you extract to JPEG (which is RGB), you may see color shifts during conversion. With pdfimages, use `-all` to keep the original encoding (CMYK JPEGs stay CMYK). With PyMuPDF, check Pixmap colorspace and convert with `pix = fitz.Pixmap(fitz.csRGB, pix)` if needed.

Images are inline with text — extraction misses them

Some PDFs have images embedded inline within text streams (rare but happens). Standard tools may not detect them. Try mutool: `mutool extract input.pdf` extracts all objects including inline images. The output is a folder of `image-NNNN.png` files plus other PDF objects.

Extraction works but I want a specific image from a specific page

Use pdfimages with page filter: `pdfimages -all -f 5 -l 5 input.pdf prefix-` extracts only from page 5. Then pick the right one. Or use PyMuPDF: `for img in doc[5].get_images()` (page 5, 0-indexed). For visual selection without the command line, use Preview or Acrobat Pro and screenshot/copy the specific image.

PDF is password-protected — can't extract anything

You need the password. With pdfimages: `pdfimages -opw owner-password -all input.pdf prefix-` for owner password, `-upw user-password` for user password. Without the password, no tool can extract content. If the PDF only has a 'permission' lock (not a content lock), some tools (qpdf, gs) can strip the permission lock with the user password.

Extract images vs convert pages

Extracting images from PDFs sounds simple, and with the right tool it is. The key insight is that PDFs store images as separate objects (XObjects, in the PDF spec) — the conversion software just pulls those objects out. The result is bit-identical to whatever was put in: a 24-megapixel photo embedded in the PDF comes out as the same 24-megapixel photo.

But three traps catch people. First, screenshot-based 'extraction' isn't extraction — it's re-rendering at screen resolution, which throws away most of the original quality. Always use a real extractor (pdfimages, PyMuPDF, Acrobat).

Second, scanned PDFs and image-only PDFs contain one big image per page, not multiple separate images. Extracting gets you page-scans, not individual photos. If you want pieces of a flat scan, you need to crop after extraction.

Third, vector graphics aren't 'images' in the PDF sense. A diagram made of paths and shapes won't extract with pdfimages — you need pdf2svg or a vector-aware extractor.

Get the tool right and the rest is mechanical: pdfimages -all for bulk command-line work, PyMuPDF for scripted/programmatic flows, browser page-to-image conversion for one-offs without installs (that is conversion, not true extraction), Acrobat Pro for polished GUI batch jobs. Every method preserves original quality if you avoid screenshot-style 'extraction'.

Your files never leave your device

FormatDrop runs the conversion engine entirely inside your browser using WebAssembly. No file upload. No server. Nothing stored. You can verify this by opening DevTools → Network tab and watching: zero upload requests.

Frequently asked questions

What's the difference between extracting images and converting PDF to JPG?
Extracting images pulls the embedded image files out of the PDF — a 4MP photo embedded in the PDF comes out as the same 4MP photo. Converting PDF to JPG renders each PDF page as one JPG image — including text, layout, multiple images, all flattened into one picture per page. They sound similar but solve different problems. For source-image recovery, extract. For thumbnail-of-each-page, convert.
Will extracted images be at full resolution?
Yes, when using pdfimages or PyMuPDF — they pull the original embedded binary stream. A 4000×3000 photo embedded in the PDF comes out as 4000×3000 bytes-identical to the source. Preview and screenshot-based methods produce only screen-resolution copies, so use them only for one-off needs where quality doesn't matter.
Best free tool for extracting images from PDF?
pdfimages from poppler-utils. Free, fast, preserves original quality. Mac: `brew install poppler`. Linux: `apt install poppler-utils`. Windows: download from poppler.freedesktop.org. For programmatic workflows, PyMuPDF (Python) is also free and more flexible.
Can I extract images from a scanned PDF?
Sort of — scanned PDFs contain one big image per page (the scan itself), not multiple separate images. Extracting gets you the page-scans. If the original PDF was made from a scanner that produced separate images per region, you can extract them; most scanners produce flat per-page images. For text-from-scans, use OCR (see our convert-pdf-to-txt guide).
Why are some images in the PDF not getting extracted?
A few possibilities: (1) Vector graphics (drawings, charts made of paths) aren't 'images' to most tools — they're vector objects. Use pdf2svg to extract them. (2) Inline images (embedded directly in content streams, rare) need mutool extract. (3) Image masks (the alpha channel of transparent images) extract separately from the image itself — use `pdfimages -all` to get both.
How do I extract images from PDF on iPhone or iPad?
FormatDrop does not have a true image extractor yet — that tool is coming. What works today on iPhone: open formatdrop.com/pdf-to-png in Safari. It turns each page into a PNG right in the browser, no upload, then crop the part you need in Photos. For true extraction of the embedded photos at original quality, use a computer with pdfimages or PyMuPDF (Methods 2 and 3).
Will extraction preserve transparency from PNG images?
Yes, with `pdfimages -all`. PNG with alpha channels embedded in PDFs preserve transparency through extraction. Verify with an image viewer that supports transparency (Preview, GIMP, Photoshop). PyMuPDF also preserves alpha when you extract with `extract_image()`.
Can I extract images from many PDFs at once?
Yes. With pdfimages: `for f in *.pdf; do mkdir "${f%.pdf}-images"; pdfimages -all "$f" "${f%.pdf}-images/img-"; done`. With PyMuPDF: loop with `glob.glob('*.pdf')` and process each. Acrobat Pro has a batch action for image export. The FormatDrop pdf-to-png page converts pages to images rather than extracting embedded photos; it takes up to 5 PDFs at once on the free plan, 10 MB each.
Does extraction work on encrypted PDFs?
Only with the password. PDFs encrypt content streams, including image streams. pdfimages, PyMuPDF, mutool, and Acrobat all accept passwords as arguments. Without the password, extraction fails — that's the whole point of PDF encryption. If you genuinely own the PDF and lost the password, password-recovery tools exist but most are paid.
Convert PDF pages to PNG — Free

No account. No upload. Works in any browser.