You can generate table in your codebehind and iterate through gridview rows and add it.
iTextSharp.text.Table schedule = new iTextSharp.text.Table(6, 6);
schedule.BorderWidth = 1;
schedule.Padding = 1;
schedule.Spacing = 1;
schedule.Width = 100;
schedule.DefaultCell.SetHorizontalAlignment("center");
schedule.AddCell(new Cell(new Chunk("Course", FontFactory.GetFont(FontFactory.TIMES_ROMAN, 10))));
schedule.AddCell(new Cell(new Chunk("Duration: Start", FontFactory.GetFont(FontFactory.TIMES_ROMAN, 10))));
schedule.AddCell(new Cell(new Chunk("Duration: Finish", FontFactory.GetFont(FontFactory.TIMES_ROMAN, 10))));
schedule.AddCell(new Cell(new Chunk("Instalment No", FontFactory.GetFont(FontFactory.TIMES_ROMAN, 10))));
schedule.AddCell(new Cell(new Chunk("Instalment Cost", FontFactory.GetFont(FontFactory.TIMES_ROMAN, 10))));
schedule.AddCell(new Cell(new Chunk("Payment Due Date", FontFactory.GetFont(FontFactory.TIMES_ROMAN, 10))));
foreach (GridViewRow row in grdView.Rows)
{
schedule.AddCell(new Cell(new Chunk(row.Cells[0].Text, FontFactory.GetFont(FontFactory.TIMES_ROMAN, 10))));
...
...
...
}