السلام عليكم
تفضلي الكود
تمت إضافة كود تعيين عرض الأعمدة
تفضلي الكود
كود :
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
' تجهيز الجدول
Dim pdfTable As New PdfPTable(DataGridView1.ColumnCount)
pdfTable.DefaultCell.Padding = 3
pdfTable.WidthPercentage = 30 ' عرض الجدول بنسبة 30% من عرض الصفحة
' توسيط الجدول في الصفحة
pdfTable.HorizontalAlignment = Element.ALIGN_CENTER
' تفعيل الاتجاه من اليمين لليسار - ضروري للغة العربية
pdfTable.RunDirection = PdfWriter.RUN_DIRECTION_RTL
' تحديد سماكة الاطار
pdfTable.DefaultCell.BorderWidth = 1
' تعيين ارتفاع افتراضي لخلايا الجدول
pdfTable.DefaultCell.FixedHeight = 100.0F
' الخطوط يجب أن تكون من خطوط النظام لتوافقها مع اللغة العربية
' لكن لها طريقة خاصة من معرفة مسار ملف اسم الملف الأصلي كالتالي
' تجهيز خط من النظام - آريـال عريض
' Arial (Bold) font
Dim fontArialBoldPath As String = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "arialbd.ttf")
Dim fontArialBold As BaseFont = BaseFont.CreateFont(fontArialBoldPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED)
' fontArialBold يتم استخدام هذا الاسم للخط
' قراءة عناوين أعمدة جدول الداتاجريدفيو
For Each column As DataGridViewColumn In DataGridView1.Columns
' تحديد الخط وحجمه
Dim fnt As New Font(fontArialBold, 24)
' تجهيز محتوى الخلية مع الخط
Dim pdfCell As New PdfPCell(New Phrase(column.HeaderText, fnt))
' إرتفاع الخلية
pdfCell.FixedHeight = 40
' تغيير لون خلفية الخلية
pdfCell.BackgroundColor = New iTextSharp.text.BaseColor(240, 240, 240)
' توسيط عمودي
pdfCell.VerticalAlignment = Element.ALIGN_MIDDLE
' توسيط أفقي
pdfCell.HorizontalAlignment = Element.ALIGN_CENTER
' إضافة الخلية إلى الجدول
pdfTable.AddCell(pdfCell)
Next
' تعيين عرض الأعمدة
Dim columnsWidth() As Integer = (From x In DataGridView1.Columns Select CInt(x.Width)).ToArray
If DataGridView1.RightToLeft = Windows.Forms.RightToLeft.Yes Then Array.Reverse(columnsWidth)
pdfTable.SetWidths(columnsWidth)
' قراءة أسطر جدول الداتاجريدفيو
For Each row As DataGridViewRow In DataGridView1.Rows
' يتم الخروج من الحلقة إذا كان السطر الأخير الجديد
If row.IsNewRow Then Exit For
' قراءة خلايا سطر جدول التاجريدفيو
For Each cell As DataGridViewCell In row.Cells
' تصحيح محتوى نص خلية جدول التاجريدفيو
If IsNothing(cell.Value) Then cell.Value = String.Empty
' تحديد الخط وحجمه ولونه
Dim fnt = New iTextSharp.text.Font(fontArialBold, 24, iTextSharp.text.Font.NORMAL, New BaseColor(193, 36, 67))
'' تحديد الخط وحجمه بدون تحديد اللون
'Dim fnt = New iTextSharp.text.Font(fontTimesNewRomanBold, 24)
' تجهيز محتوى الخلية مع الخط مع مسافة قبلها
Dim pdfCell As New PdfPCell(New Phrase(" " & cell.Value, fnt))
' إرتفاع الخلية
pdfCell.FixedHeight = 60
' توسيط عمودي
pdfCell.VerticalAlignment = Element.ALIGN_MIDDLE
' إضافة الخلية إلى الجدول
pdfTable.AddCell(pdfCell)
Next
Next
' تجهيز المجلد
Dim folderPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\FP\"
If Not IO.Directory.Exists(folderPath) Then IO.Directory.CreateDirectory(folderPath)
' إسم الملف كامل مع المسار
Dim fileName As String = folderPath & "DataGridViewExport.pdf"
' تجهيز المستند
Dim pdfDoc As New Document(PageSize.A2, 10.0F, 10.0F, 10.0F, 0.0F)
' كتابة المستند في الملف
PdfWriter.GetInstance(pdfDoc, New IO.FileStream(fileName, IO.FileMode.Create))
pdfDoc.Open()
pdfDoc.Add(pdfTable)
pdfDoc.Close()
End Subتمت إضافة كود تعيين عرض الأعمدة


