Skip to main content

Command Palette

Search for a command to run...

Extract Images from PDF Using C#

Published
4 min readView as Markdown

In .NET development, extracting images from PDFs is a common requirement—whether you need to pull charts from documents during data migration or extract key illustrations for content analysis, this scenario is hard to avoid. However, traditional solutions have drawbacks: paid PDF libraries are costly, and many rely on heavyweight tools like Adobe Acrobat, making them impractical for small and medium-sized projects.

This article will show you how to use the free library Free Spire.PDF for .NET to implement two key use cases: "batch extraction from the entire document" and "precise extraction from specific pages." The code is simple, and the operation is efficient—no complex setup required.


Add the Library in 3 Simple Steps

Before using Free Spire.PDF, you first need to reference the library. The easiest way is via NuGet (no manual file downloads or path configurations):

  1. Open Visual Studio, right-click your project, and select Manage NuGet Packages;
  2. Go to the Browse tab, search for "Free Spire.PDF," and click Install on the official package;
  3. Once installation finishes, the project will automatically add the library reference—you’re ready to code.

⚠️ Important Note: The free version of Free Spire.PDF has a page limit: it only supports PDFs with up to 10 pages.


Code Examples for PDF Image Extraction

The core logic of image extraction with Free Spire.PDF is straightforward:

  1. Use the GetImagesInfo() method from the PdfImageHelper class to get image metadata from PDF pages;
  2. Call PdfImageInfo.Image.Save() to save the extracted images to your local drive.

Below are reusable code examples for the two most common scenarios.

Scenario 1: Extract All Images from a PDF

Ideal for use cases like "archiving all illustrations in a document" or "batch collecting images from a multi-page report." The workflow is: Load the PDF → Loop through all pages → Extract and save images in order.

using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.Drawing;

namespace ExtractAllPdfImages
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. Load the target PDF (replace with your file path: relative or absolute)
            // Example: pdf.LoadFromFile(@"C:\Docs\Report.pdf"); (absolute path)
            PdfDocument pdf = new PdfDocument();
            pdf.LoadFromFile("Input.pdf");

            // 2. Initialize the image extraction tool
            PdfImageHelper imageExtractor = new PdfImageHelper();

            // 3. Loop through pages and extract images
            int imageCounter = 0; // Avoid duplicate image filenames
            for (int pageIndex = 0; pageIndex < pdf.Pages.Count; pageIndex++)
            {
                // Get the current page object
                PdfPageBase currentPage = pdf.Pages[pageIndex];
                // Get all images on the current page
                PdfImageInfo[] pageImages = imageExtractor.GetImagesInfo(currentPage);

                // Save each image to the "Output" folder
                foreach (var imageInfo in pageImages)
                {
                    Image extractedImage = imageInfo.Image;
                    // Customize save path/format (supports PNG, JPG, BMP, etc.)
                    extractedImage.Save($"Output\\all_images_{imageCounter}.png"); 
                    imageCounter++;
                }
            }

            // 4. Release resources to avoid memory leaks
            pdf.Dispose();
            System.Console.WriteLine("All images extracted successfully!");
        }
    }
}

Scenario 2: Extract Images from Specific PDF Pages

Perfect for cases like "extracting the cover image from page 1" or "pulling a chart from page 5 of a thesis." The key is to locate the target page first, then extract its images.

using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.Drawing;

namespace ExtractImagesFromSpecificPages
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. Load the target PDF
            PdfDocument pdf = new PdfDocument();
            pdf.LoadFromFile("Input.pdf"); // Replace with your PDF path

            // 2. Define the target page (e.g., extract from page 3 → index = 2)
            int targetPageIndex = 2; 
            // Validate page index (avoid out-of-range errors)
            if (targetPageIndex < 0 || targetPageIndex >= pdf.Pages.Count)
            {
                System.Console.WriteLine("Invalid page index!");
                return;
            }
            PdfPageBase targetPage = pdf.Pages[targetPageIndex];

            // 3. Extract images from the target page
            PdfImageHelper imageExtractor = new PdfImageHelper();
            PdfImageInfo[] targetPageImages = imageExtractor.GetImagesInfo(targetPage);

            // 4. Save images (filename includes page number for clarity)
            for (int i = 0; i < targetPageImages.Length; i++)
            {
                Image extractedImage = targetPageImages[i].Image;
                // Filename format: page_[pageNumber]_image_[imageIndex].png
                extractedImage.Save($"Output\\page_{targetPageIndex + 1}_image_{i}.png"); 
            }

            // 5. Release resources
            pdf.Dispose();
            System.Console.WriteLine($"Images from page {targetPageIndex + 1} extracted successfully!");
        }
    }
}

⚠️ Critical Tip: Free Spire.PDF uses 0-based page indexing—page 1 = index 0, page 2 = index 1, page N = index N-1.


Advantages of This Solution & Key Notes

1. Core Advantages

  • High Flexibility: Customize save paths (e.g., Output\\2025_Reports\\), image formats (PNG/JPG/BMP), and filenames (e.g., include page numbers or timestamps);
  • Efficient Batch Processing: Loop through pages to handle multi-page PDFs in seconds—no manual page-by-page work;
  • Lightweight & Independent: No need to install Adobe Acrobat or other third-party software; just reference one library to run.

2. Important Notes

  • If the "Output" folder doesn’t exist, the code will throw an error—create the folder manually first, or add System.IO.Directory.CreateDirectory("Output"); before saving images;

Summary

With Free Spire.PDF for .NET, extracting PDF images requires no complex parsing algorithms or heavy tools—just a few lines of code to achieve precise extraction. Whether you need to batch process an entire document or target specific pages, this solution is fast, cost-effective, and easy to integrate into .NET projects. It’s ideal for developers looking to reduce development time and avoid expensive third-party libraries.

More from this blog

coding

19 posts