Export PDF Document to images

  • Demo
  • C# source
  • VB.Net source

The sample demonstrates how to export PDF pages as images by PdfDocumentViewer Component.

Download PDFViewer.pdf

using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;

using Spire.PdfViewer.Forms;

namespace Spire.PdfView.Demos.Export
{
    class Program
    {
        private static PdfDocumentViewer viewer = null;

        [STAThread]
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            viewer = new PdfDocumentViewer();
            viewer.LoadFromFile("PDFViewer.pdf");

            //form and child components
            Form mainForm = new Form();
            mainForm.Text = "Spire.PdfView Demo - Export";
            mainForm.Size = new System.Drawing.Size(800, 600);
            mainForm.StartPosition = FormStartPosition.CenterScreen;

            TableLayoutPanel table = new TableLayoutPanel();
            table.ColumnCount = 3;
            table.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50));
            table.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 20));
            table.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50));
            table.RowCount = 2;
            table.RowStyles.Add(new RowStyle(SizeType.Percent, 100));
            table.RowStyles.Add(new RowStyle(SizeType.Absolute, 30));

            table.Controls.Add(viewer, 0, 0);
            table.SetColumnSpan(viewer, 3);
            viewer.Dock = DockStyle.Fill;

            //Export current page to one image
            Button button = new Button();
            button.Text = "Export to one image";
            button.Size = new Size(180, 24);
            button.TextAlign = ContentAlignment.MiddleCenter;
            table.Controls.Add(button, 0, 1);
            button.Dock = DockStyle.Right;
            button.Click += ExportToOneImage;

            //Export current pdf document to multiple images
            button = new Button();
            button.Text = "Export to multiple images";
            button.Size = new Size(180, 24);
            button.TextAlign = ContentAlignment.MiddleCenter;
            table.Controls.Add(button, 2, 1);
            button.Dock = DockStyle.Left;
            button.Click += ExportToMultipleImages;

            mainForm.Controls.Add(table);
            table.Dock = DockStyle.Fill;

            Application.Run(mainForm);
        }

        private static void ExportToOneImage(object sender, EventArgs e)
        {
            if (viewer.PageCount > 0)
            {
                SaveFileDialog dialog = new SaveFileDialog();
                dialog.Filter = "PNG Format(*.png)|*.png";
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    int currentPage = viewer.CurrentPageNumber;
                    Bitmap image = viewer.SaveAsImage(currentPage - 1);
                    image.Save(dialog.FileName);
                }
            }
        }

        private static void ExportToMultipleImages(object sender, EventArgs e)
        {
            if (viewer.PageCount > 0)
            {
                FolderBrowserDialog dialog = new FolderBrowserDialog();
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    int currentPage = viewer.CurrentPageNumber;
                    Bitmap[] images = viewer.SaveAsImage(0, currentPage - 1);
                    for (int i = 0; i < images.Length; i++)
                    {
                        String fileName = Path.Combine(dialog.SelectedPath, String.Format("PDFViewer-{0}.png", i));
                        images[i].Save(fileName);
                    }
                }
            }
        }
    }
}

Imports System.Drawing
Imports System.IO
Imports System.Windows.Forms

Imports Spire.PdfViewer.Forms

Namespace Spire.PdfView.Demos.Export
    Friend NotInheritable Class Program
        Private Shared viewer As PdfDocumentViewer = Nothing

         _
        Shared Sub Main()
            Application.EnableVisualStyles()
            Application.SetCompatibleTextRenderingDefault(False)

            viewer = New PdfDocumentViewer()
            viewer.LoadFromFile("PDFViewer.pdf")

            'form and child components
            Dim mainForm As New Form()
            mainForm.Text = "Spire.PdfView Demo - Export"
            mainForm.Size = New System.Drawing.Size(800, 600)
            mainForm.StartPosition = FormStartPosition.CenterScreen

            Dim table As New TableLayoutPanel()
            table.ColumnCount = 3
            table.ColumnStyles.Add(New ColumnStyle(SizeType.Percent, 50))
            table.ColumnStyles.Add(New ColumnStyle(SizeType.Absolute, 20))
            table.ColumnStyles.Add(New ColumnStyle(SizeType.Percent, 50))
            table.RowCount = 2
            table.RowStyles.Add(New RowStyle(SizeType.Percent, 100))
            table.RowStyles.Add(New RowStyle(SizeType.Absolute, 30))

            table.Controls.Add(viewer, 0, 0)
            table.SetColumnSpan(viewer, 3)
            viewer.Dock = DockStyle.Fill

            'Export current page to one image
            Dim button As New Button()
            button.Text = "Export to one image"
            button.Size = New Size(180, 24)
            button.TextAlign = ContentAlignment.MiddleCenter
            table.Controls.Add(button, 0, 1)
            button.Dock = DockStyle.Right
            AddHandler button.Click, AddressOf ExportToOneImage

            'Export current pdf document to multiple images
            button = New Button()
            button.Text = "Export to multiple images"
            button.Size = New Size(180, 24)
            button.TextAlign = ContentAlignment.MiddleCenter
            table.Controls.Add(button, 2, 1)
            button.Dock = DockStyle.Left
            AddHandler button.Click, AddressOf ExportToMultipleImages

            mainForm.Controls.Add(table)
            table.Dock = DockStyle.Fill

            Application.Run(mainForm)
        End Sub

        Private Shared Sub ExportToOneImage(ByVal sender As Object, ByVal e As EventArgs)
            If viewer.PageCount > 0 Then
                Dim dialog As New SaveFileDialog()
                dialog.Filter = "PNG Format(*.png)|*.png"
                If dialog.ShowDialog() = DialogResult.OK Then
                    Dim currentPage As Integer = viewer.CurrentPageNumber
                    Dim image As Bitmap = viewer.SaveAsImage(currentPage - 1)
                    image.Save(dialog.FileName)
                End If
            End If
        End Sub

        Private Shared Sub ExportToMultipleImages(ByVal sender As Object, ByVal e As EventArgs)
            If viewer.PageCount > 0 Then
                Dim dialog As New FolderBrowserDialog()
                If dialog.ShowDialog() = DialogResult.OK Then
                    Dim currentPage As Integer = viewer.CurrentPageNumber
                    Dim images As Bitmap() = viewer.SaveAsImage(0, currentPage - 1)
                    For i As Integer = 0 To images.Length - 1
                        Dim fileName As [String] = Path.Combine(dialog.SelectedPath, [String].Format("PDFViewer-{0}.png", i))
                        images(i).Save(fileName)
                    Next
                End If
            End If
        End Sub
    End Class
End Namespace