DEV Community

IronSoftware
IronSoftware

Posted on

Convert PDF to Image/Bitmap in C# (.NET Guide)

Our web app needed PDF previews. Browsers don't render PDFs consistently. Some users couldn't view attachments. We needed reliable thumbnails.

Converting PDFs to images solved this. Here's how to turn PDF pages into PNG, JPG, and bitmap files.

How Do I Convert a PDF to Images?

Use RasterizeToImageFiles():

using IronPdf;
// Install via NuGet: Install-Package IronPdf

var pdf = PdfDocument.FromFile("document.pdf");

pdf.RasterizeToImageFiles("output-*.png");
Enter fullscreen mode Exit fullscreen mode

Creates one PNG file per page: output-0.png, output-1.png, etc.

Why Convert PDFs to Images?

Web previews: Display PDFs without PDF.js or plugins
Thumbnails: Generate preview tiles for document libraries
Image processing: Apply filters, OCR, computer vision
Universal compatibility: Images work everywhere
Email attachments: Easier to embed than PDFs
Social media: Share pages as images

I use this for invoice preview tiles in customer portals.

What Image Formats Are Supported?

// PNG (lossless, transparency)
pdf.RasterizeToImageFiles("page-*.png");

// JPEG (smaller files, no transparency)
pdf.RasterizeToImageFiles("page-*.jpg");

// BMP (uncompressed)
pdf.RasterizeToImageFiles("page-*.bmp");

// GIF (animations possible)
pdf.RasterizeToImageFiles("page-*.gif");

// TIFF (multi-page support)
pdf.RasterizeToImageFiles("page-*.tiff");
Enter fullscreen mode Exit fullscreen mode

PNG is the default. Best quality and transparency support.

How Do I Control Image Quality?

Set DPI (dots per inch):

using IronPdf.Rendering;

pdf.RasterizeToImageFiles("high-res-*.png", new ImageRenderingOptions
{
    Dpi = 300 // High quality
});
Enter fullscreen mode Exit fullscreen mode

DPI guidelines:

  • 72 DPI: Screen previews (default)
  • 150 DPI: Good quality thumbnails
  • 300 DPI: Print quality
  • 600 DPI: High-resolution archival

Higher DPI = larger files, better quality.

Can I Convert Specific Pages Only?

Yes, use page indices:

// Convert pages 1, 3, and 5
pdf.RasterizeToImageFiles("selected-*.png", new ImageRenderingOptions
{
    PageIndexes = new[] { 0, 2, 4 } // Zero-indexed
});
Enter fullscreen mode Exit fullscreen mode

Or a range:

// Pages 5-10
pdf.RasterizeToImageFiles("range-*.png", new ImageRenderingOptions
{
    PageIndexes = Enumerable.Range(4, 6).ToArray()
});
Enter fullscreen mode Exit fullscreen mode

How Do I Get Images as Bitmaps in Memory?

Use ToBitmap() for System.Drawing.Bitmap objects:

using System.Drawing;

var pdf = PdfDocument.FromFile("document.pdf");

var bitmap = pdf.ToBitmap(0); // Page 0 as Bitmap

// Use the bitmap
bitmap.Save("page0.png");

// Or process in-memory
using var g = Graphics.FromImage(bitmap);
g.DrawString("DRAFT", new Font("Arial", 48), Brushes.Red, 100, 100);
bitmap.Save("watermarked.png");
Enter fullscreen mode Exit fullscreen mode

No intermediate files. Perfect for dynamic processing.

Can I Customize Image Dimensions?

Yes, set width and height:

pdf.RasterizeToImageFiles("custom-*.png", new ImageRenderingOptions
{
    Width = 800,
    Height = 1000
});
Enter fullscreen mode Exit fullscreen mode

Images scale to fit dimensions while maintaining aspect ratio.

How Do I Generate Thumbnails?

// Small preview images
pdf.RasterizeToImageFiles("thumb-*.png", new ImageRenderingOptions
{
    Width = 200,
    Height = 260,
    Dpi = 96
});
Enter fullscreen mode Exit fullscreen mode

Fast generation, small file size. Perfect for gallery views.

What About Multi-Page TIFFs?

Create a single TIFF with all pages:

pdf.RasterizeToImageFiles("complete.tiff", new ImageRenderingOptions
{
    ImageType = IronSoftware.Drawing.AnyBitmap.ImageFormat.Tiff
});
Enter fullscreen mode Exit fullscreen mode

One file contains all PDF pages as TIFF frames.

Can I Batch Convert Multiple PDFs?

Yes, loop through files:

var pdfFiles = Directory.GetFiles("input", "*.pdf");

foreach (var file in pdfFiles)
{
    var pdf = PdfDocument.FromFile(file);
    var name = Path.GetFileNameWithoutExtension(file);

    pdf.RasterizeToImageFiles($"output/{name}-*.png");
}
Enter fullscreen mode Exit fullscreen mode

Processes entire directories.

How Do I Convert PDFs to Base64 Images?

var bitmap = pdf.ToBitmap(0);

using var ms = new MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
byte[] imageBytes = ms.ToArray();

string base64 = Convert.ToBase64String(imageBytes);

// Use in HTML
string dataUri = $"data:image/png;base64,{base64}";
Enter fullscreen mode Exit fullscreen mode

Embed images directly in HTML or JSON.

What's the Performance?

Single page: ~200-500ms depending on complexity
Batch processing: Process pages in parallel for speed

Parallel.ForEach(pdfFiles, file =>
{
    var pdf = PdfDocument.FromFile(file);
    pdf.RasterizeToImageFiles($"output/{Path.GetFileNameWithoutExtension(file)}-*.png");
});
Enter fullscreen mode Exit fullscreen mode

Multi-threading significantly improves batch performance.

Can I Preserve Transparency?

PNG supports transparency. Use it for overlays:

pdf.RasterizeToImageFiles("transparent-*.png", new ImageRenderingOptions
{
    ImageType = IronSoftware.Drawing.AnyBitmap.ImageFormat.Png
});
Enter fullscreen mode Exit fullscreen mode

If your PDF has transparent regions, PNG preserves them. JPEG does not.

How Do I Handle Large PDFs?

Convert one page at a time to manage memory:

for (int i = 0; i < pdf.PageCount; i++)
{
    var bitmap = pdf.ToBitmap(i);
    bitmap.Save($"page-{i}.png");
    bitmap.Dispose(); // Free memory immediately
}
Enter fullscreen mode Exit fullscreen mode

Prevents out-of-memory errors on 1000+ page documents.

Can I Apply Filters or Effects?

Yes, use System.Drawing after conversion:

var bitmap = pdf.ToBitmap(0);

// Convert to grayscale
for (int y = 0; y < bitmap.Height; y++)
{
    for (int x = 0; x < bitmap.Width; x++)
    {
        Color pixel = bitmap.GetPixel(x, y);
        int gray = (int)(pixel.R * 0.3 + pixel.G * 0.59 + pixel.B * 0.11);
        bitmap.SetPixel(x, y, Color.FromArgb(gray, gray, gray));
    }
}

bitmap.Save("grayscale.png");
Enter fullscreen mode Exit fullscreen mode

Or use ImageSharp for modern, performant image processing.

How Do I Create Responsive Images?

Generate multiple sizes:

var sizes = new[] { 400, 800, 1200 };

foreach (var size in sizes)
{
    pdf.RasterizeToImageFiles($"page-{size}w-*.png", new ImageRenderingOptions
    {
        Width = size
    });
}
Enter fullscreen mode Exit fullscreen mode

Use in HTML with srcset for responsive design.

What About Color Space?

Images default to RGB. For print, consider CMYK conversion post-processing using specialized libraries like ImageMagick or Adobe libraries.

Can I Extract Images FROM PDFs?

Different operation. Use ExtractAllImages():

var images = pdf.ExtractAllImages();

foreach (var img in images)
{
    img.SaveAs($"extracted-{img.Width}x{img.Height}.png");
}
Enter fullscreen mode Exit fullscreen mode

Extracts embedded images, doesn't rasterize pages.

How Do I Add Watermarks Before Converting?

Draw on PDF first:

pdf.DrawText("CONFIDENTIAL", 300, 400, 0);

pdf.RasterizeToImageFiles("watermarked-*.png");
Enter fullscreen mode Exit fullscreen mode

Watermark appears in all output images.

What's the File Size Impact?

Factors affecting size:

  • DPI: Higher = larger
  • Format: PNG > BMP, JPEG smallest
  • Dimensions: Larger = more pixels
  • Complexity: Detailed pages = bigger files

Typical sizes:

  • 72 DPI PNG: 100-300KB per page
  • 150 DPI PNG: 300-800KB per page
  • 300 DPI PNG: 1-3MB per page

Use JPEG for smaller files if transparency isn't needed.

Can I Optimize Output Images?

Yes, use compression:

using ImageSharp;
using ImageSharp.Processing;

var image = Image.Load("page-0.png");
image.Mutate(x => x.Resize(800, 1000));

image.Save("optimized.png", new PngEncoder
{
    CompressionLevel = PngCompressionLevel.BestCompression
});
Enter fullscreen mode Exit fullscreen mode

Reduces file size by 30-50% without visible quality loss.


Written by Jacob Mellor, CTO at Iron Software. Jacob created IronPDF and leads a team of 50+ engineers building .NET document processing libraries.

Top comments (0)