Nura Yuniar
Nura Yuniar

Reputation: 21

how to add footer (with variables/class) with itextsharp pdf

I have this code and I want to add a table as a footer. But the problem is I cannot pass the variables:

Document doc = new Document();
doc.AddTitle("e-8D Report_" + report.OSIE8DNO + ".pdf");
PdfWriter writer = PdfWriter.GetInstance(doc, fs);

doc.SetPageSize(PageSize.A4);
doc.SetMargins(18f, 18f, 18f, 18f); // 0.25 inch margins

doc.Open();

PdfPTable table = new PdfPTable(10)
{
       WidthPercentage = 100,
       LockedWidth = true,
       TotalWidth = 560f
};
float[] widths = new float[] { 32f, 73f, 70f, 70f, 70f, 70f, 70f, 70f, 73f, 32f };
table.SetWidths(widths);

// rest of the document
// ...
// rest of the document

// Below is the part that I want to add as footer

#region Footer
// left margin
cell = new PdfPCell(new Phrase(" ", font6))
{
      Border = Rectangle.NO_BORDER
};
table.AddCell(cell);

cell = new PdfPCell(new Phrase("Reviewed & Approved by :", font6))
{
      Colspan = 4,
      BackgroundColor = bgBlue,
      HorizontalAlignment = Element.ALIGN_LEFT,
      Border = Rectangle.TOP_BORDER | Rectangle.LEFT_BORDER
};
table.AddCell(cell);

cell = new PdfPCell(new Phrase("For document approval by email, no Manual / e-Signature required &", font2))
{
       Colspan = 4,
       BackgroundColor = bgBlue,
       HorizontalAlignment = Element.ALIGN_LEFT,
       Border = Rectangle.TOP_BORDER | Rectangle.RIGHT_BORDER
};
table.AddCell(cell);

// right margin
cell = new PdfPCell(new Phrase(" ", font6))
{
       Border = Rectangle.NO_BORDER
};
table.AddCell(cell);

// the rest of the cell
//...
// the rest of the cell

#endregion

doc.Add(table);
//writer.PageEvent = new PDFFooter();
doc.Close();

With this variables, I can't make the footer with PdfPageEventHelper from this source: Footer in pdf with iTextSharp

Please help

Upvotes: 0

Views: 293

Answers (1)

Nura Yuniar
Nura Yuniar

Reputation: 21

Already got the answer. I add parameter to the PdfPageEventHelper Class:

public PdfPTable footer { get; set; }

public override void OnEndPage(PdfWriter writer, Document document)
{
     base.OnEndPage(writer, document);
     document.Add(footer);
}

And call from the page (create complete table first on the page):

writer.PageEvent = new PDFHeaderFooter() { footer = table };

Upvotes: 1

Related Questions