问题
I'm trying to add a footer in every page of a PDF document. I want to have a name and the current date. I'm using this code, but it's only printing in the last page. I need it in every page. What am I missing here?
DateTime horario = DateTime.MinValue;
document.Add(new iText.Paragraph(document.BottomMargin, "TEST FOOTER" + horario));
回答1:
I manage to fix doing this. In my class that create the pdf i add this line.
pdfWriter.PageEvent = new PDFFooter();
and i created another class called PDFFooter.
public class PDFFooter : PdfPageEventHelper
{
// write on top of document
public override void OnOpenDocument(PdfWriter writer, Document document)
{
base.OnOpenDocument(writer, document);
PdfPTable tabFot = new PdfPTable(new float[] { 1F });
tabFot.SpacingAfter = 10F;
PdfPCell cell;
tabFot.TotalWidth = 300F;
cell = new PdfPCell(new Phrase(""));
cell.Border = Rectangle.NO_BORDER;
tabFot.AddCell(cell);
tabFot.WriteSelectedRows(0, -1, 150, document.Top, writer.DirectContent);
}
// write on start of each page
public override void OnStartPage(PdfWriter writer, Document document)
{
base.OnStartPage(writer, document);
}
// write on end of each page
public override void OnEndPage(PdfWriter writer, Document document)
{
DateTime horario = DateTime.Now;
base.OnEndPage(writer, document);
PdfPTable tabFot = new PdfPTable(new float[] { 1F });
PdfPCell cell;
tabFot.TotalWidth = 300F;
cell = new PdfPCell(new Phrase("TEST"+" - " + horario));
cell.Border = Rectangle.NO_BORDER;
cell.HorizontalAlignment = Element.ALIGN_CENTER;
tabFot.AddCell(cell);
tabFot.WriteSelectedRows(0, -1, 150, document.Bottom, writer.DirectContent);
}
//write on close of document
public override void OnCloseDocument(PdfWriter writer, Document document)
{
base.OnCloseDocument(writer, document);
}
}
}
来源:https://stackoverflow.com/questions/39603619/footer-in-pdf-with-itextsharp