Add Header and Footer for PDF using iTextsharp

后端 未结 9 1665
情歌与酒
情歌与酒 2020-11-27 04:04

How can I add header and footer for each page in the pdf.

Headed will contain just a text Footer will contain a text and pagination for pdf (Page : 1 of 4)

H

9条回答
  •  庸人自扰
    2020-11-27 04:19

    The answers to this question, while they are correct, are very unnecessarily complicated. It doesn't take that much code for text to show up in the header/footer. Here is a simple example of adding text to the header/footer.

    The current version of iTextSharp works by implementing a callback class which is defined by the IPdfPageEvent interface. From what I understand, it's not a good idea to add things during the OnStartPage method, so instead I will be using the OnEndPage page method. The events are triggered depending on what is happening to the PdfWriter

    First, create a class which implements IPdfPageEvent. In the:

    public void OnEndPage(PdfWriter writer, Document document)
    

    function, obtain the PdfContentByte object by calling

    PdfContentByte cb = writer.DirectContent;
    

    Now you can add text very easily:

    ColumnText ct = new ColumnText(cb);
    
    cb.BeginText();
    cb.SetFontAndSize(BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.NOT_EMBEDDED), 12.0f);
    //Note, (0,0) in this case is at the bottom of the document
    cb.SetTextMatrix(document.LeftMargin, document.BottomMargin); 
    cb.ShowText(String.Format("{0} {1}", "Testing Text", "Like this"));
    cb.EndText();
    

    So the full for the OnEndPage function will be:

    public void OnEndPage(PdfWriter writer, Document document)
    {
        PdfContentByte cb = writer.DirectContent;
        ColumnText ct = new ColumnText(cb);
    
        cb.BeginText();
        cb.SetFontAndSize(BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.NOT_EMBEDDED), 12.0f);
        cb.SetTextMatrix(document.LeftMargin, document.BottomMargin);
        cb.ShowText(String.Format("{0} {1}", "Testing Text", "Like this"));
        cb.EndText();
    
    }
    

    This will show up at the bottom of your document. One last thing. Don't forget to assign the IPdfPageEvent like this:

    writter.PageEvent = new PDFEvents();
    

    To the PdfWriter writter object

    For the header it is very similar. Just flip the SetTextMatrix y coordinate:

    cb.SetTextMatrix(document.LeftMargin, document.PageSize.Height - document.TopMargin);
    

提交回复
热议问题