Как добавить нижний колонтитул только на последнюю страницу itextsharp pdf?
Я экспортирую свою HTML - страницу в pdf и добавляю нижний колонтитул в pdf с помощью "PdfPageEventHelper", но он добавляет нижний колонтитул на каждой странице, но я хочу добавить нижний колонтитул только на последней странице?
Что я уже пробовал:
код для преобразования html в pdf :
StringWriter s_tw = new StringWriter(); HtmlTextWriter h_textw = new HtmlTextWriter(s_tw); div1.RenderControl(h_textw);//Name of the Panel Document doc = new Document(); doc = new Document(PageSize.A4, 50, 50, 50, 50); FontFactory.GetFont("Times New Roman", 8); StringReader s_tr = new StringReader(s_tw.ToString()); // HTMLWorker html_worker = new HTMLWorker(doc); using (MemoryStream memoryStream = new MemoryStream()) { PdfWriter writer = PdfWriter.GetInstance(doc, memoryStream); writer.PageEvent = new PDFFooter(); doc.Open(); XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, s_tr); doc.Close(); writer.Close(); byte[] bytes = memoryStream.GetBuffer(); memoryStream.Close();
код для помощника по событиям:
public class PDFFooter : PdfPageEventHelper { PdfContentByte cb; PdfTemplate template; // we will put the final number of pages in a template // write on top of document /// <inheritdoc> public override void OnOpenDocument(PdfWriter writer, Document document) { } /// <inheritdoc> public override void OnCloseDocument(PdfWriter writer, Document document) { base.OnCloseDocument(writer, document); PdfPTable tab = new PdfPTable(1); PdfPCell cell = new PdfPCell(new Phrase(writer.PageNumber)); cell.Border = 0; tab.TotalWidth = 300F; tab.AddCell(cell); tab.WriteSelectedRows(0, -1, 300, 30, writer.DirectContent); } // write on start of each page /// <inheritdoc> public override void OnStartPage(PdfWriter writer, Document document) { } /// <inheritdoc> public override void OnEndPage(PdfWriter writer, Document document) { if (document.PageNumber == writer.PageNumber - 1) { PdfContentByte cb = writer.DirectContent; ColumnText ct = new ColumnText(cb); cb.BeginText(); cb.SetFontAndSize(BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.NOT_EMBEDDED), 8.0f); cb.SetTextMatrix(document.LeftMargin, document.BottomMargin); // cb.ShowText(""); cb.ShowText( "Name: " + username)); cb.EndText(); } } }