0

I am unable to get the code to add the page number X of Y in Header of the page.

JJJ
  • 32,902
  • 20
  • 89
  • 102
Laxminarayan Alas
  • 195
  • 2
  • 3
  • 9

2 Answers2

0

You can do this by a PdfTemplate. First, you attach a PdfPageEventHelper to PdfWriter

Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, 
       new FileOutputStream("C:/path/to/pdf"));
writer.setPageEvent(new PageEventListener());

Then you define the class PageEventListener to extend PdfPageEventHelper. In that class you override onOpenDocument, onEndPage and onCloseDocument methods and you can add page number in the form X of Y using a PdfTemplate. Details with working code available here, in chapter05 directory, MovieCountries1.java source.

Pier Luigi
  • 7,871
  • 9
  • 36
  • 46
0

Create a class like below one

public class HeaderAndFooter extends PdfPageEventHelper {

public void onEndPage (PdfWriter writer, Document document) {
    Rectangle rect = writer.getBoxSize("art");
    switch(writer.getPageNumber() % 2) {
    case 0:
       ColumnText.showTextAligned(writer.getDirectContent(),
               Element.ALIGN_RIGHT, new Phrase("header"),
               rect.getBorderWidthRight(), rect.getBorderWidthTop(), 0);
        break;
    case 1:
        ColumnText.showTextAligned(writer.getDirectContent(),
                Element.ALIGN_CENTER, new Phrase(String.format("%d", writer.getPageNumber())),
                300f, 62f, 0);
        break;
    }
   ColumnText.showTextAligned(writer.getDirectContent(),
            Element.ALIGN_CENTER, new Phrase(String.format("%d", writer.getPageNumber())),
            (2f + 4f) / 2, 2f - 18, 0);
}}

use below one in your generating pdf class

bytearrayoutputstream = new ByteArrayOutputStream();
        Document document = new Document(PageSize.A4, 60, 60, 120, 80);
        PdfWriter writer = PdfWriter.getInstance(document, bytearrayoutputstream );
        HeaderAndFooter event = new HeaderAndFooter();
        writer.setPageEvent(event);
        document.open();

change header alignment width according to ur document height and width

Aravinth
  • 363
  • 2
  • 10
  • 33