If you just need a simple page number, then this does the job:
public class PageHeaderFooter : PdfPageEventHelper
{
private readonly Font _pageNumberFont = new Font(Font.HELVETICA, 8f, Font.NORMAL, Color.BLACK);
public override void OnEndPage(PdfWriter writer, Document document)
{
AddPageNumber(writer, document);
}
private void AddPageNumber(PdfWriter writer, Document document)
{
var text = writer.PageNumber.ToString();
var numberTable = new PdfPTable(1);
var numberCell = new BorderlessPdfPCell(new Phrase(text, _pageNumberFont)) {HorizontalAlignment = Element.ALIGN_RIGHT};
numberTable.AddCell(numberCell);
numberTable.TotalWidth = 50;
numberTable.WriteSelectedRows(0, -1, document.Right - 80, document.Bottom + 20, writer.DirectContent);
}
}
And you use it this way:
var stream = new MemoryStream();
var document = new Document(PageSize.A4, 20, 20, 30, 30);
var pdfWriter = PdfWriter.GetInstance(document, stream);
pdfWriter.PageEvent = new PageHeaderFooter();
// rest of PDF generation