Hi smile,
Note: For this sample i have used Below articles. For more details refer below article links.
https://www.aspsnippets.com/Articles/Export-Windows-Forms-DataGridView-to-PDF-using-iTextSharp-C-and-VBNet.aspx
https://www.aspsnippets.com/questions/136700/Export-Windows-Forms-Application-DataGridView-with-Arabic-Characters-to-PDF-using-iTextSharp/
You need to add iTextSharp and iTextSharp.xmlWorker library.
Please refer below sample.
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)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] { new DataColumn("ID",typeof(int)),
new DataColumn("Col_1"),
new DataColumn("Col_2"),
new DataColumn("Col_3"),
new DataColumn("Col_4") });
dt.Rows.Add(1, "الخدمات العامہ 1", "الخدمات المساعدہ ", "لخدمات العامہ11", "08-09-2022");
dt.Rows.Add(2, "الخدمات العامہ 1", "الخدمات المساعدہ ", "لخدمات العامہ11", "09-09-2022");
dt.Rows.Add(3, "الخدمات العامہ 1", "الخدمات المساعدہ ", "لخدمات العامہ11", "10-09-2022");
DataTable dt2 = new DataTable();
dt2.Columns.AddRange(new DataColumn[] { new DataColumn("ID",typeof(int)),
new DataColumn("Category"),
new DataColumn("Question"),
new DataColumn("Remarks"),});
dt2.Rows.Add(1, "الخدمات العامة", "تتوفر مواقف سيارات خاصة بالمنشأة", "False");
dt2.Rows.Add(2, "الخدمات العامة", "مواقف السيارات مسفلته", "True");
dt2.Rows.Add(3, "مواقف السيارات", "يتوفر موقف لذوي الاعاقة", "False");
dt2.Rows.Add(4, "مواقف السيارات", "يحتوي المدخل على حواجز جانبية مساندة", "False");
dt2.Rows.Add(5, "مواقف السيارات", "المنحدر آمن غير قابل للانزلاق", "False");
dt2.Rows.Add(6, "حالة المنشأة", "يتوفر مكان مخصص للنفايات الطبية محكم الاغلاق", "True");
dt2.Rows.Add(7, "حالة المنشأة", "المكان المخصص للنفايات الطبية بعيد عن مسارات المراجعين", "True");
dt2.Rows.Add(8, "حالة المنشأة", "يتوفر شعار الخطر الحيوي على المكان المخصص للنفايات الطبية وحاويات النقل", "True");
string folderPath = "C:\\PDFs\\";
if (!Directory.Exists(folderPath))
{
Directory.CreateDirectory(folderPath);
}
using (FileStream stream = new FileStream(folderPath + "Report.pdf", FileMode.Create))
{
Document document = new Document(PageSize.A4, 10, 10f, 10f, 10f);
PdfWriter pdfWriter = PdfWriter.GetInstance(document, stream);
document.Open();
BaseFont bf = BaseFont.CreateFont(Environment.GetEnvironmentVariable("windir") + @"\fonts\Arial.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
iTextSharp.text.Font font = new iTextSharp.text.Font(bf, 6, iTextSharp.text.Font.NORMAL);
foreach (DataRow dr in dt.Rows)
{
PdfPCell cell = null;
PdfPTable table = null;
table = new PdfPTable(1);
table.WidthPercentage = 100;
table.DefaultCell.BorderWidth = 1;
table.HorizontalAlignment = Element.ALIGN_LEFT;
cell = PhraseCell(new Phrase(dr["Col_1"].ToString(), font), PdfPCell.ALIGN_CENTER);
cell.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
table.AddCell(cell);
cell = PhraseCell(new Phrase(dr["Col_2"].ToString(), font), PdfPCell.ALIGN_CENTER);
cell.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
table.AddCell(cell);
cell = PhraseCell(new Phrase(dr["Col_3"].ToString(), font), PdfPCell.ALIGN_CENTER);
cell.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
table.AddCell(cell);
cell = PhraseCell(new Phrase(dr["Col_4"].ToString(), font), PdfPCell.ALIGN_CENTER);
cell.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
table.AddCell(cell);
document.Add(table);
table = new PdfPTable(4);
table.WidthPercentage = 100;
table.DefaultCell.BorderWidth = 1;
table.HorizontalAlignment = Element.ALIGN_LEFT;
cell = PhraseCell(new Phrase("Id", FontFactory.GetFont("Arial", 8, iTextSharp.text.Font.BOLD, BaseColor.BLACK)), PdfPCell.ALIGN_CENTER);
table.AddCell(cell);
cell = PhraseCell(new Phrase("Category", FontFactory.GetFont("Arial", 8, iTextSharp.text.Font.BOLD, BaseColor.BLACK)), PdfPCell.ALIGN_CENTER);
table.AddCell(cell);
cell = PhraseCell(new Phrase("Question", FontFactory.GetFont("Arial", 8, iTextSharp.text.Font.BOLD, BaseColor.BLACK)), PdfPCell.ALIGN_CENTER);
table.AddCell(cell);
cell = PhraseCell(new Phrase("Remark", FontFactory.GetFont("Arial", 8, iTextSharp.text.Font.BOLD, BaseColor.BLACK)), PdfPCell.ALIGN_CENTER);
table.AddCell(cell);
for (int i = 0; i < dt2.Rows.Count; i++)
{
for (int j = 0; j < dt2.Columns.Count; j++)
{
cell = PhraseCell(new Phrase(dt2.Rows[i][j].ToString(), font), PdfPCell.ALIGN_CENTER);
cell.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
table.AddCell(cell);
}
}
document.Add(table);
document.NewPage();
}
document.Close();
stream.Close();
}
}
private static PdfPCell PhraseCell(Phrase phrase, int align)
{
PdfPCell cell = new PdfPCell(phrase);
cell.BorderColor = BaseColor.WHITE;
cell.VerticalAlignment = PdfPCell.ALIGN_TOP;
cell.HorizontalAlignment = align;
cell.PaddingBottom = 2f;
cell.PaddingTop = 0f;
return cell;
}
Vb.Net
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
Dim dt As DataTable = New DataTable()
dt.Columns.AddRange(New DataColumn() {New DataColumn("ID", GetType(Integer)),
New DataColumn("Col_1"),
New DataColumn("Col_2"),
New DataColumn("Col_3"),
New DataColumn("Col_4")})
dt.Rows.Add(1, "الخدمات العامہ 1", "الخدمات المساعدہ ", "لخدمات العامہ11", "08-09-2022")
dt.Rows.Add(2, "الخدمات العامہ 1", "الخدمات المساعدہ ", "لخدمات العامہ11", "09-09-2022")
dt.Rows.Add(3, "الخدمات العامہ 1", "الخدمات المساعدہ ", "لخدمات العامہ11", "10-09-2022")
Dim dt2 As DataTable = New DataTable()
dt2.Columns.AddRange(New DataColumn() {New DataColumn("ID", GetType(Integer)),
New DataColumn("Category"),
New DataColumn("Question"),
New DataColumn("Remarks")})
dt2.Rows.Add(1, "الخدمات العامة", "تتوفر مواقف سيارات خاصة بالمنشأة", "False")
dt2.Rows.Add(2, "الخدمات العامة", "مواقف السيارات مسفلته", "True")
dt2.Rows.Add(3, "مواقف السيارات", "يتوفر موقف لذوي الاعاقة", "False")
dt2.Rows.Add(4, "مواقف السيارات", "يحتوي المدخل على حواجز جانبية مساندة", "False")
dt2.Rows.Add(5, "مواقف السيارات", "المنحدر آمن غير قابل للانزلاق", "False")
dt2.Rows.Add(6, "حالة المنشأة", "يتوفر مكان مخصص للنفايات الطبية محكم الاغلاق", "True")
dt2.Rows.Add(7, "حالة المنشأة", "المكان المخصص للنفايات الطبية بعيد عن مسارات المراجعين", "True")
dt2.Rows.Add(8, "حالة المنشأة", "يتوفر شعار الخطر الحيوي على المكان المخصص للنفايات الطبية وحاويات النقل", "True")
Dim folderPath As String = "C:\PDFs\"
If Not Directory.Exists(folderPath) Then
Directory.CreateDirectory(folderPath)
End If
Using stream As FileStream = New FileStream(folderPath & "Report.pdf", FileMode.Create)
Dim document As Document = New Document(PageSize.A4, 10, 10.0F, 10.0F, 10.0F)
Dim pdfWriter As PdfWriter = pdfWriter.GetInstance(document, stream)
document.Open()
Dim bf As BaseFont = BaseFont.CreateFont(Environment.GetEnvironmentVariable("windir") & "\fonts\Arial.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED)
Dim font As iTextSharp.text.Font = New iTextSharp.text.Font(bf, 6, iTextSharp.text.Font.NORMAL)
For Each dr As DataRow In dt.Rows
Dim cell As PdfPCell = Nothing
Dim table As PdfPTable = Nothing
table = New PdfPTable(1)
table.WidthPercentage = 100
table.DefaultCell.BorderWidth = 1
table.HorizontalAlignment = Element.ALIGN_LEFT
cell = PhraseCell(New Phrase(dr("Col_1").ToString(), font), PdfPCell.ALIGN_CENTER)
cell.RunDirection = pdfWriter.RUN_DIRECTION_RTL
table.AddCell(cell)
cell = PhraseCell(New Phrase(dr("Col_2").ToString(), font), PdfPCell.ALIGN_CENTER)
cell.RunDirection = pdfWriter.RUN_DIRECTION_RTL
table.AddCell(cell)
cell = PhraseCell(New Phrase(dr("Col_3").ToString(), font), PdfPCell.ALIGN_CENTER)
cell.RunDirection = pdfWriter.RUN_DIRECTION_RTL
table.AddCell(cell)
cell = PhraseCell(New Phrase(dr("Col_4").ToString(), font), PdfPCell.ALIGN_CENTER)
cell.RunDirection = pdfWriter.RUN_DIRECTION_RTL
table.AddCell(cell)
document.Add(table)
table = New PdfPTable(4)
table.WidthPercentage = 100
table.DefaultCell.BorderWidth = 1
table.HorizontalAlignment = Element.ALIGN_LEFT
cell = PhraseCell(New Phrase("Id", FontFactory.GetFont("Arial", 8, iTextSharp.text.Font.BOLD, BaseColor.BLACK)), PdfPCell.ALIGN_CENTER)
table.AddCell(cell)
cell = PhraseCell(New Phrase("Category", FontFactory.GetFont("Arial", 8, iTextSharp.text.Font.BOLD, BaseColor.BLACK)), PdfPCell.ALIGN_CENTER)
table.AddCell(cell)
cell = PhraseCell(New Phrase("Question", FontFactory.GetFont("Arial", 8, iTextSharp.text.Font.BOLD, BaseColor.BLACK)), PdfPCell.ALIGN_CENTER)
table.AddCell(cell)
cell = PhraseCell(New Phrase("Remark", FontFactory.GetFont("Arial", 8, iTextSharp.text.Font.BOLD, BaseColor.BLACK)), PdfPCell.ALIGN_CENTER)
table.AddCell(cell)
For i As Integer = 0 To dt2.Rows.Count - 1
For j As Integer = 0 To dt2.Columns.Count - 1
cell = PhraseCell(New Phrase(dt2.Rows(i)(j).ToString(), font), PdfPCell.ALIGN_CENTER)
cell.RunDirection = pdfWriter.RUN_DIRECTION_RTL
table.AddCell(cell)
Next
Next
document.Add(table)
document.NewPage()
Next
document.Close()
stream.Close()
End Using
End Sub
Private Shared Function PhraseCell(ByVal phrase As Phrase, ByVal align As Integer) As PdfPCell
Dim cell As PdfPCell = New PdfPCell(phrase)
cell.BorderColor = BaseColor.WHITE
cell.VerticalAlignment = PdfPCell.ALIGN_TOP
cell.HorizontalAlignment = align
cell.PaddingBottom = 2.0F
cell.PaddingTop = 0.0F
Return cell
End Function
Screenshot