Skip Navigation Links.
In this demo you can learn how to extract the images from a PDF document. You can choose the range of PDF pages from where to extract the images. Images will be extracted in memory in .NET Image objects.
Server Settings
IP: Port: Password:
PDF document:
Open the Input PDF Document
Page Range
From: To:
Skip Navigation Links
C# Code
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using HiQPdfClient;

namespace HiQPdf_Demo
    public partial class ExtractImagesFromPdf : System.Web.UI.Page
        protected void buttonExtractImages_Click(object sender, EventArgs e)
            string serverIP = textBoxServerIP.Text;
            uint serverPort = uint.Parse(textBoxServerPort.Text);
            string serverPassword = textBoxServerPassword.Text;

            // get the PDF file
            string pdfFile = Server.MapPath("~") + @"\DemoFiles\Pdf\InputPdf.pdf";

            // create the PDF images extractor
            PdfImagesExtract pdfImagesExtract = new PdfImagesExtract(serverIP, serverPort);

            // use server password if necessary
            if (serverPassword.Length > 0)
                pdfImagesExtract.ServerPassword = serverPassword;

            // set a demo serial number
            pdfImagesExtract.SerialNumber = "YCgJMTAE-BiwJAhIB-EhlWTlBA-UEBRQFBA-U1FOUVJO-WVlZWQ==";

            int fromPdfPageNumber = int.Parse(textBoxFromPage.Text);
            int toPdfPageNumber = textBoxToPage.Text.Length > 0 ? int.Parse(textBoxToPage.Text) : 0;

            // extract the images from PDF document to memory in .NET Image objects
            // the images can also be extracted to a folder using the ExtractToImageFiles method 
            // or they can be extracted one by one using the RaiseImageExtractedEvent method
            ExtractedPdfImage[] extractedImages = pdfImagesExtract.ExtractToImageObjects(pdfFile, fromPdfPageNumber, toPdfPageNumber);

            // return if no image was extracted
            if (extractedImages.Length == 0)

            // get the largest image bytes in a buffer
            byte[] imageBuffer = null;
                // select the largest image
                ExtractedPdfImage largestImage = null;
                for (int i = 0; i < extractedImages.Length; i++)
                    if (largestImage == null || extractedImages[i].ImageData.Length > largestImage.ImageData.Length)
                        largestImage = extractedImages[i];

                // get the image data in a buffer
                imageBuffer = GetImageBuffer(largestImage);
                // dispose the extracted images
                for (int i = 0; i < extractedImages.Length; i++)

            // inform the browser about the binary data format
            HttpContext.Current.Response.AddHeader("Content-Type", "image/png");

            // let the browser know how to open the image and the image name
                        String.Format("attachment; filename={0}; size={1}", "ExtractedImage.png", imageBuffer.Length.ToString()));

            // write the image buffer to HTTP response

            // call End() method of HTTP response to stop ASP.NET page processing

        private byte[] GetImageBuffer(ExtractedPdfImage extractedImage)
            byte[] imageBuffer = new byte[extractedImage.ImageData.Length];
            Array.Copy(extractedImage.ImageData, imageBuffer, imageBuffer.Length);

            return imageBuffer;

        protected void Page_Load(object sender, EventArgs e)
            if (!IsPostBack)
                string pageUri = HttpContext.Current.Request.Url.AbsoluteUri;
                hyperLinkOpenPdf.NavigateUrl = pageUri.Substring(0, pageUri.LastIndexOf('/')) + @"/DemoFiles/Pdf/InputPdf.pdf";