How to Draw PDF Table in C#, VB.NET

PDF table is one of the best ways to display data information. Using it, all the data can be quickly and clearly read. This section will introduce a solution to draw PDF table via a .NET PDF component in C#, VB.NET.

Using Spire.PDF for .NET (a .NET PDF library for manipulating PDF files), you can draw PDF table through two simple steps. One is to draw all the data by a string array. Another step is to split these string array by string[] Split(params char[] separator); Thus, a PDF table has been drawn. From below picture, you can see the effect of the task:

Here, you can download Spire.PDF for .NET and install it on your system. After adding the Spire.Pdf dll from your Bin folder, you can follow below key code to draw your PDF table in C#, VB.NET.

[C#]
  //Create a pdf document.
        PdfDocument doc = new PdfDocument();
        PdfSection sec = doc.Sections.Add();
        sec.PageSettings.Width = PdfPageSize.A4.Width;
        PdfPageBase page = sec.Pages.Add();
        float y = 10;
        //title
        PdfBrush brush1 = PdfBrushes.Black;
        PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Arial", 16f, FontStyle.Bold));
        PdfStringFormat format1 = new PdfStringFormat(PdfTextAlignment.Center);
        page.Canvas.DrawString("Part Sales Information", font1, brush1, page.Canvas.ClientSize.Width / 2, y, format1);
        y = y + font1.MeasureString("Country List", format1).Height;
        y = y + 5;

        String[] data
     = {
     "PartNo;Description;OnHand;OnOrder;Cost;ListPrice",
     "900;Dive kayak;24;16;1356.75;3999.95",
     "912;Underwater Diver Vehicle;5;3;504;1680",
     "1313;Regulator System;165;216;117.5;250",
     "1314;Second Stage Regulator;98;88;124.1;365",
     "1316;Regulator System;75;70;119.35;341",
     "1320;Second Stage Regulator;37;35;73.53;171",
     "1328;Regulator System;166;100;154.8;430",
     "1330;Alternate Inflation Regulator;47;43;85.8;260",
     "1364;Second Stage Regulator;128;135;99.9;270",
     "1390;First Stage Regulator;146;140;64.6;170",
     "1946;Second Stage Regulator;13;10;95.79;309",
     "1986;Depth/Pressure Gauge Console;25;24;73.32;188",
     "2314;Electronic Console;13;12;120.9;390",
     "2341;Depth/Pressure Gauge;226;225;48.3;105",
     "2343;Personal Dive Sonar;46;45;72.85;235",
     "2350;Compass Console Mount;211;300;10.15;29"
         };
        String[][] dataSource
            = new String[data.Length][];
        for (int i = 0; i < data.Length; i++)
        {
            dataSource[i] = data[i].Split(';');
        }

        PdfTable table = new PdfTable();
        table.Style.CellPadding = 2;
        table.Style.BorderPen = new PdfPen(brush1, 0.75f);
        table.Style.HeaderStyle.StringFormat = new PdfStringFormat(PdfTextAlignment.Center);
        table.Style.HeaderSource = PdfHeaderSource.Rows;
        table.Style.HeaderRowCount = 1;
        table.Style.ShowHeader = true;
        table.Style.HeaderStyle.BackgroundBrush = PdfBrushes.CadetBlue;
        table.DataSource = dataSource;
        foreach(PdfColumn column in table.Columns)
        {
            column.StringFormat = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle);
        }
        table.Draw(page, new PointF(0, y));

        doc.SaveToFile("SimpleTable.pdf");
[VB.NET]
 'Create a pdf document.
        Dim doc As New PdfDocument()
        Dim sec As PdfSection = doc.Sections.Add()
        sec.PageSettings.Width = PdfPageSize.A4.Width
        Dim page As PdfPageBase = sec.Pages.Add()
        Dim y As Single = 10
        'title
        Dim brush1 As PdfBrush = PdfBrushes.Black
        Dim font1 As New PdfTrueTypeFont(New Font("Arial", 16.0F, FontStyle.Bold))
        Dim format1 As New PdfStringFormat(PdfTextAlignment.Center)
        page.Canvas.DrawString("Part Sales Information", font1, brush1, page.Canvas.ClientSize.Width / 2, y, format1)
        y = y + font1.MeasureString("Country List", format1).Height
        y = y + 5

        Dim data As [String]() = {
        "PartNo;Description;OnHand;OnOrder;Cost;ListPrice",
        "900;Dive kayak;24;16;1356.75;3999.95",
        "912;Underwater Diver Vehicle;5;3;504;1680",
        "1313;Regulator System;165;216;117.5;250",
        "1314;Second Stage Regulator;98;88;124.1;365",
        "1316;Regulator System;75;70;119.35;341",
        "1320;Second Stage Regulator;37;35;73.53;171",
        "1328;Regulator System;166;100;154.8;430",
        "1330;Alternate Inflation Regulator;47;43;85.8;260",
        "1364;Second Stage Regulator;128;135;99.9;270",
        "1390;First Stage Regulator;146;140;64.6;170",
        "1946;Second Stage Regulator;13;10;95.79;309",
        "1986;Depth/Pressure Gauge Console;25;24;73.32;188",
        "2314;Electronic Console;13;12;120.9;390",
        "2341;Depth/Pressure Gauge;226;225;48.3;105",
        "2343;Personal Dive Sonar;46;45;72.85;235",
        "2350;Compass Console Mount;211;300;10.15;29"

        Dim dataSource As [String]()() = New [String](data.Length - 1)() {}
        For i As Integer = 0 To data.Length - 1
            dataSource(i) = data(i).Split(";"c)
        Next

        Dim table As New PdfTable()
        table.Style.CellPadding = 2
        table.Style.BorderPen = New PdfPen(brush1, 0.75F)
        table.Style.HeaderStyle.StringFormat = New PdfStringFormat(PdfTextAlignment.Center)
        table.Style.HeaderSource = PdfHeaderSource.Rows
        table.Style.HeaderRowCount = 1
        table.Style.ShowHeader = True
        table.Style.HeaderStyle.BackgroundBrush = PdfBrushes.CadetBlue
        table.DataSource = dataSource
        For Each column As PdfColumn In table.Columns
            column.StringFormat = New PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle)
        Next
        table.Draw(page, New PointF(0, y))

        doc.SaveToFile("SimpleTable.pdf")

Spire.PDF for .NET is a professional .NET PDF component which enables you to create, edit and handle PDF files in C#, VB.NET.