Skip to content

Instantly share code, notes, and snippets.

@nitinjs
Created October 6, 2018 06:57
Show Gist options
  • Save nitinjs/ffa841432c2d8103a0462a4271d52a11 to your computer and use it in GitHub Desktop.
Save nitinjs/ffa841432c2d8103a0462a4271d52a11 to your computer and use it in GitHub Desktop.
Using iTextSharp combines two template files into one pdf and adds table to the pages
//iTextSharp
using (FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "TableTest.pdf", FileMode.Create))
{
Document doc = new Document(PageSize.LETTER);
doc.SetMargins(0, 0, 0, 0);
PdfWriter writer = PdfWriter.GetInstance(doc, fs);
doc.Open();
//add first page
PdfReader pdfReader = new PdfReader(templatePath + "Page1.pdf");
PdfImportedPage page = writer.GetImportedPage(pdfReader, 1);
doc.Add(iTextSharp.text.Image.GetInstance(page));
PdfContentByte pcb = writer.DirectContent;
PdfPTable table = new PdfPTable(5);
table.TotalWidth = doc.PageSize.Width - 90;
// header rows
table.AddCell(GetCell("Header " + Count, 1, 1));
table.AddCell(GetCell("Header " + Count, 1, 1));
table.AddCell(GetCell("Header " + Count, 1, 1));
table.AddCell(GetCell("Header " + Count, 1, 1));
table.AddCell(GetCell("Header " + Count, 1, 1));
table.CompleteRow();
for (int i = 0; i <= 8; i++)
{
// Inner middle row.
table.AddCell(GetCell("Content" + Count));
table.AddCell(GetCell("Content" + Count));
table.AddCell(GetCell("Content" + Count));
table.AddCell(GetCell("Content" + Count));
table.AddCell(GetCell("Content" + Count));
table.CompleteRow();
table.WriteSelectedRows(0, -1, 50, doc.PageSize.Height - 140, pcb);
page.Add(pcb);
}
//add second page
PdfReader pdfReader2 = null;
PdfImportedPage page2 = null;
for (int i = 1; i <= 2; i++)
{
doc.NewPage();
PdfPTable table2 = new PdfPTable(5);
PdfContentByte pcb2 = writer.DirectContent;
pdfReader2 = new PdfReader(templatePath + "Page2.pdf");
page2 = writer.GetImportedPage(pdfReader2, 1);
doc.Add(iTextSharp.text.Image.GetInstance(page2));
table2.TotalWidth = doc.PageSize.Width - 90;
// header rows
var y = rowCount;
table2.AddCell(GetCell("Header" + y));
table2.AddCell(GetCell("Header" + y));
table2.AddCell(GetCell("Header" + y));
table2.AddCell(GetCell("Header" + y));
table2.AddCell(GetCell("Header" + y));
table2.CompleteRow();
for (int x = 0; x <= 23; x++)
{
y = rowCount;
if ((y) % 5 == 0)
{
table2.AddCell(GetCell("Content" + y));
table2.AddCell(GetCell("Content" + y));
table2.AddCell(GetCell("Content" + y));
table2.AddCell(GetCell("Content" + y));
table2.AddCell(GetCell("Content" + y));
table2.CompleteRow();
y = rowCount;
var p = new Phrase("");
PdfPCell cell = new PdfPCell(p);
cell.Border = 0;
cell.Colspan = 5;
cell.Rowspan = 1;
cell.PaddingBottom = 15;
LineSeparator line = new LineSeparator(1f, 100f, BaseColor.BLACK, Element.ALIGN_LEFT, 1);
p.Add(line);
table2.AddCell(cell);
table2.CompleteRow();
}
else
{
// Inner middle row.
table2.AddCell(GetCell("Content" + y));
table2.AddCell(GetCell("Content" + y));
table2.AddCell(GetCell("Content" + y));
table2.AddCell(GetCell("Content" + y));
table2.AddCell(GetCell("Content" + y));
table2.CompleteRow();
}
table2.WriteSelectedRows(0, -1, 50, doc.PageSize.Height - 140, pcb2);
page2.Add(pcb2);
}
}
doc.Close();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment