SelectPdf for .NET 10 - Pdf To Image Converter. Convert PDF pages to PNG, JPG, BMP or TIFF - C# / .NET 10 Sample

This sample shows how to use SelectPdf Pdf Library for .NET to convert PDF document pages to different image formats.

The sample uses the following (existing) test PDF:
Test PDF document

This sample will only convert the first page from the specified range (for PNG, JPG, BMP formats). For the TIFF multipage image format, all the specified pages will be converted.

Image Format:

Start Page:


End Page:

(Leave empty to extract until the last page)

Sample code · C#
using System.IO;
using System;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.Rendering;
using SelectPdf.Universal;

namespace SelectPdf.Samples.Pages
{
    public class PdfToImageConverterModel : PageModel
    {
        public void OnGet()
        {

        }

        [BindProperty]
        public string DdlImageFormat { get; set; }

        public List<SelectListItem> ImageFormats { get; } = new List<SelectListItem>
        {
            new SelectListItem { Value = "PNG", Text = "PNG" },
            new SelectListItem { Value = "JPEG", Text = "JPEG" },
            new SelectListItem { Value = "BMP", Text = "BMP" },
            new SelectListItem { Value = "TIFF", Text = "TIFF" },
        };

        [BindProperty]
        public string TxtStartPage { get; set; }

        [BindProperty]
        public string TxtEndPage { get; set; }


        public IActionResult OnPost()
        {
            // the test file
            string filePdf = Path.Combine(Startup.ServerPath, "wwwroot", "files", "selectpdf.pdf");

            // settings
            string imgFormat = DdlImageFormat;

            int startPage = 1;
            try
            {
                startPage = Convert.ToInt32(TxtStartPage);
            }
            catch { }

            int endPage = 0;
            try
            {
                endPage = Convert.ToInt32(TxtEndPage);
            }
            catch { }

            // instantiate a pdf rasterizer (pdf to image converter) object
            PdfRasterizer rasterizer = new PdfRasterizer();

            // load PDF file
            rasterizer.Load(filePdf);

            // set the properties
            rasterizer.StartPageNumber = startPage;
            rasterizer.EndPageNumber = endPage;

            // other properties that can be set
            rasterizer.Resolution = 150;
            rasterizer.ColorSpace = PdfRasterizerColorSpace.RGB;

            // convert pages to images
            byte[] imgBytes;
            string httpHeader;
            string fileName;
            if (imgFormat == "TIFF")
            {
                // TIFF: a single multi-frame file holding every selected page.
                imgBytes = rasterizer.ConvertToTiff();
                httpHeader = "image/tiff";
                fileName = "Image.tiff";
            }
            else
            {
                // PNG / JPEG / BMP: the rasterizer returns the bytes already encoded in ImagesFormat,
                // so no re-encoding is needed in the sample. The browser downloads one file, so we
                // return the first rendered page.
                if (imgFormat == "JPG" || imgFormat == "JPEG")
                {
                    rasterizer.ImagesFormat = PdfImageFormat.Jpeg;
                    httpHeader = "image/jpeg";
                    fileName = "Image.jpg";
                }
                else if (imgFormat == "BMP")
                {
                    rasterizer.ImagesFormat = PdfImageFormat.Bmp;
                    httpHeader = "image/bmp";
                    fileName = "Image.bmp";
                }
                else
                {
                    rasterizer.ImagesFormat = PdfImageFormat.Png;
                    httpHeader = "image/png";
                    fileName = "Image.png";
                }

                byte[][] images = rasterizer.ConvertToImages();
                imgBytes = images[0];
            }

            // return resulted image
            FileResult fileResult = new FileContentResult(imgBytes, httpHeader);
            fileResult.FileDownloadName = fileName;
            return fileResult;

        }
    }
}