Hi Faizal,
Check this example. Now please take its reference and correct your code.
Namespaces
C#
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
VB.Net
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Code
C#
private void Form1_Load(object sender, EventArgs e)
{
BindDataGridView();
}
private void BindDataGridView()
{
string imagePath = Application.StartupPath.Replace("bin\\Debug", "Images");
DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Data", typeof(byte[]));
foreach (string file in Directory.GetFiles(imagePath))
{
string fileName = Path.GetFileName(file);
byte[] bytes = File.ReadAllBytes(file);
dt.Rows.Add(fileName, bytes);
}
dataGridView1.DataSource = dt;
dataGridView1.AllowUserToAddRows = false;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
}
private void btnExport_Click(object sender, EventArgs e)
{
PdfPTable pdfTable = new PdfPTable(dataGridView1.ColumnCount);
pdfTable.DefaultCell.Padding = 3;
pdfTable.WidthPercentage = 30;
pdfTable.HorizontalAlignment = Element.ALIGN_LEFT;
pdfTable.DefaultCell.BorderWidth = 1;
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
PdfPCell cell = new PdfPCell(new Phrase(column.HeaderText));
cell.BackgroundColor = new iTextSharp.text.BaseColor(240, 240, 240);
pdfTable.AddCell(cell);
}
foreach (DataGridViewRow row in dataGridView1.Rows)
{
string name = row.Cells[0].Value.ToString();
pdfTable.AddCell(name);
byte[] imageByte = (byte[])row.Cells[1].Value;
iTextSharp.text.Image myImage = iTextSharp.text.Image.GetInstance(imageByte);
pdfTable.AddCell(myImage);
}
string folderPath = @"D:\\";
if (!Directory.Exists(folderPath))
{
Directory.CreateDirectory(folderPath);
}
using (FileStream stream = new FileStream(folderPath + "DataGridViewImageExport.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 Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
BindDataGridView()
End Sub
Private Sub BindDataGridView()
Dim imagePath As String = Application.StartupPath.Replace("bin\Debug", "Images")
Dim dt As DataTable = New DataTable()
dt.Columns.Add("Name", GetType(String))
dt.Columns.Add("Data", GetType(Byte()))
For Each file As String In Directory.GetFiles(imagePath)
Dim fileName As String = Path.GetFileName(file)
Dim bytes As Byte() = System.IO.File.ReadAllBytes(file)
dt.Rows.Add(fileName, bytes)
Next
dataGridView1.DataSource = dt
dataGridView1.AllowUserToAddRows = False
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
End Sub
Private Sub btnExport_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnExport.Click
Dim pdfTable As PdfPTable = New PdfPTable(dataGridView1.ColumnCount)
pdfTable.DefaultCell.Padding = 3
pdfTable.WidthPercentage = 30
pdfTable.HorizontalAlignment = Element.ALIGN_LEFT
pdfTable.DefaultCell.BorderWidth = 1
For Each column As DataGridViewColumn In dataGridView1.Columns
Dim cell As PdfPCell = New PdfPCell(New Phrase(column.HeaderText))
cell.BackgroundColor = New iTextSharp.text.BaseColor(240, 240, 240)
pdfTable.AddCell(cell)
Next
For Each row As DataGridViewRow In dataGridView1.Rows
Dim name As String = row.Cells(0).Value.ToString()
pdfTable.AddCell(name)
Dim imageByte As Byte() = CType(row.Cells(1).Value, Byte())
Dim myImage As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(imageByte)
pdfTable.AddCell(myImage)
Next
Dim folderPath As String = "D:\\"
If Not Directory.Exists(folderPath) Then
Directory.CreateDirectory(folderPath)
End If
Using stream As FileStream = New FileStream(folderPath & "DataGridViewImageExport.pdf", FileMode.Create)
Dim pdfDoc As Document = 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
Screensots
Form
![](https://i.imgur.com/XhvuU3j.jpg)
Exported PDF
![](https://i.imgur.com/9esqrL7.jpg)