In this article I will explain with an example, how to export Windows Forms DataGridView to PDF using iTextSharp in C# and VB.Net.
 
 

Form Design

The Form consists of following control:
DataGridView – For displaying data.
Button – For exporting the DataGridView to PDF file.
The Button has been assigned with a Click event handler.
Export Windows Forms DataGridView to PDF using iTextSharp, C# and VB.Net
 
 

Namespaces

You will need to import the following namespace.
C#
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
 
VB.Net
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf
 
 

Populating DataGridView

Inside the BindDataGridView method, the DataGridView is populated with the records from dynamic DataTable.
C#
public Form1()
{
    InitializeComponent();
    this.BindDataGridView();
}
 
private void BindDataGridView()
{
    DataTable  dt =  new DataTable();
    dt.Columns.AddRange(new DataColumn[3] {
            new DataColumn("Id"typeof(int)), 
            new DataColumn("Name"typeof(string)), 
            new DataColumn("Country"typeof(string))
    });
    dt.Rows.Add(1, "John Hammond", "United States");
    dt.Rows.Add(2, "Mudassar Khan", "India");
    dt.Rows.Add(3, "Suzanne Mathews", "France");
    dt.Rows.Add(4, "Robert Schidner", "Russia");
    this.dataGridView1.DataSource = dt;
}
 
VB.Net
Public Sub New()
    InitializeComponent()
    Me.BindDataGridView()
End Sub
 
Private Sub BindDataGridView()
    Dim dt As New DataTable()
    dt.Columns.AddRange(New DataColumn() { New DataColumn("Id"GetType(Integer)), 
                                        New DataColumn("Name"GetType(String)), 
                                        New DataColumn("Country"GetType(String))})
    dt.Rows.Add(1, "John Hammond", "United States")
    dt.Rows.Add(2, "Mudassar Khan", "India")
    dt.Rows.Add(3, "Suzanne Mathews", "France")
    dt.Rows.Add(4, "Robert Schidner", "Russia")
    Me.dataGridView1.DataSource = dt
End Sub
 
 

Exporting DataGridView data to PDF

When Export button is clicked, the PDF is exported.
Here, iTextSharp PDF Table is created with columns same as that of the DataGridView and then a loop is executed over the DataGridView columns to add their header texts to the PDF Table header row.
Once the header row is populated then FOR Each Loop is executed over the DataGridView rows to create the PDF Table rows.
Then a directory (folder) is created if it does not exists. This folder will be used to save the generated PDF file.
Finally, the PDF Table is added to the iTextSharp PDF document and then the PDF document is saved as PDF file to the directory that we had created earlier.
C#
private void btnExportPdf_Click(object  sender,EventArgs e)
{
    //Creating iTextSharp Table from the DataTable data
    PdfPTable pdfTable = new PdfPTable(dataGridView1.ColumnCount);
    pdfTable.DefaultCell.Padding = 3;
    pdfTable.WidthPercentage = 30;
    pdfTable.HorizontalAlignment Element.ALIGN_LEFT;
    pdfTable.DefaultCell.BorderWidth = 1;
 
    //Adding Header row
    foreach (DataGridViewColumn column in dataGridView1.Columns)
    {
        PdfPCell cell = new PdfPCell(new Phrase(column.HeaderText));
        cell.BackgroundColor = new iTextSharp.text.Color(240, 240, 240);
        pdfTable.AddCell(cell);
    }
 
    //Adding DataRow
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        foreach (DataGridViewCell cell in row.Cells)
        {
            pdfTable.AddCell(cell.Value.ToString());
        }
    }
 
    //Exporting to PDF
    string folderPath "C:\\PDFs\\";
    if (!Directory.Exists(folderPath))
    {
        Directory.CreateDirectory(folderPath);
    }
    using (FileStream stream = new FileStream(folderPath + "DataGridViewExport.pdf", FileMode.Create))
    {
        Document pdfDoc = new Document(PageSize.A2, 10f, 10f, 10f, 0f);
        PdfWriter.GetInstance(pdfDoc, stream);
        pdfDoc.Open();
        pdfDoc.Add(pdfTable);
        pdfDoc.Close();
        stream.Close();
    }
}
 
VB.Net
Private Sub btnExportPDF_Click(sender As System.Object, e As System.EventArgs) Handles btnExportPDF.Click
    'Creating iTextSharp Table from the DataTable data
    Dim pdfTable As New PdfPTable(dataGridView1.ColumnCount)
    pdfTable.DefaultCell.Padding = 3
    pdfTable.WidthPercentage = 30
    pdfTable.HorizontalAlignment Element.ALIGN_LEFT
    pdfTable.DefaultCell.BorderWidth = 1
 
    'Adding Header row
    For Each column As DataGridViewColumn In dataGridView1.Columns
        Dim cell As New PdfPCell(New Phrase(column.HeaderText))
        cell.BackgroundColor = New iTextSharp.text.Color(240, 240, 240)
        pdfTable.AddCell(cell)
    Next
 
    'Adding DataRow
    For Each row As DataGridViewRow In dataGridView1.Rows
        For Each  cell As DataGridViewCell In row.Cells
            pdfTable.AddCell(cell.Value.ToString())
        Next
    Next
 
    'Exporting to PDF
    Dim folderPath As String "C:\PDFs\"
    If Not Directory.Exists(folderPath) Then
        Directory.CreateDirectory(folderPath)
    End If
    Using stream As New FileStream(folderPath & "DataGridViewExport.pdf", FileMode.Create)
        Dim pdfDoc As New Document(PageSize.A2, 10.0F, 10.0F, 10.0F, 0.0F)
        PdfWriter.GetInstance(pdfDoc, stream)
        pdfDoc.Open()
        pdfDoc.Add(pdfTable)
        pdfDoc.Close()
        stream.Close()
    End Using
End Sub
 
 

Screenshots

The Form

Export Windows Forms DataGridView to PDF using iTextSharp, C# and VB.Net
 

Exported PDF

Export Windows Forms DataGridView to PDF using iTextSharp, C# and VB.Net
 
 

Downloads