Home  >  Article  >  Backend Development  >  How to Extract Images from PDF Documents with Native Resolution and Format in Python?

How to Extract Images from PDF Documents with Native Resolution and Format in Python?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-22 07:55:30569browse

How to Extract Images from PDF Documents with Native Resolution and Format in Python?

Extracting Images from PDF Documents with Native Resolution and Format

When working with PDF documents, extracting images with their original resolution and format can be crucial. This ensures that the extracted images retain the same quality and integrity as the source document. In this article, we present a solution for extracting images from PDF documents in Python without resampling, allowing you to obtain high-quality images in their native formats.

PyMuPDF for Image Extraction

One of the most popular Python modules for PDF manipulation is PyMuPDF. This module provides a robust way to extract images from PDF documents while preserving their native resolution and format. Here's a code snippet using PyMuPDF:

<code class="python">import fitz

# Open the PDF document
doc = fitz.open("file.pdf")

# Iterate through pages and images
for i in range(len(doc)):
    for img in doc.getPageImageList(i):
        xref = img[0]

        # Convert picture object to PNG
        pix = fitz.Pixmap(doc, xref)
        if pix.n < 5:  # grayscale or RGB
            pix.writePNG("p%s-%s.png" % (i, xref))
        else:  # CMYK
            pix1 = fitz.Pixmap(fitz.csRGB, pix)
            pix1.writePNG("p%s-%s.png" % (i, xref))
            pix1 = None</code>

This code iterates through all pages and images in the PDF document and extracts them as PNG files. It preserves the native resolution and format of each image, ensuring that you get high-quality images.

Modified Version for Updated PyMuPDF

If you're using a newer version of PyMuPDF (e.g., 1.19.6), you may need to modify the above code slightly. The following code snippet reflects the necessary changes:

<code class="python">import os
import fitz
from tqdm import tqdm

# Set working directory
workdir = "your_folder"

# Process PDF files in the directory
for each_path in os.listdir(workdir):
    if ".pdf" in each_path:
        # Open the PDF document
        doc = fitz.Document((os.path.join(workdir, each_path)))

        # Iterate through pages and images
        for i in tqdm(range(len(doc)), desc="pages"):
            for img in tqdm(doc.get_page_images(i), desc="page_images"):
                xref = img[0]

                # Extract the image and save it as PNG
                image = doc.extract_image(xref)
                pix = fitz.Pixmap(doc, xref)
                pix.save(os.path.join(workdir, "%s_p%s-%s.png" % (each_path[:-4], i, xref)))

# Print a completion message
print("Done!")</code>

This modified code uses the get_page_images() method to obtain the images and saves them as PNG files in the specified working directory.

The above is the detailed content of How to Extract Images from PDF Documents with Native Resolution and Format in Python?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn