I am unable to get the code to add the page number X of Y in Header of the page.
Asked
Active
Viewed 5,236 times
0
-
Refer this link, http://stackoverflow.com/questions/5717981/show-page-numbers-in-pdf-using-itext – Selvakumar Ponnusamy Dec 11 '11 at 14:15
-
Here I can get just page number But how can i get page number X of Y in Header? try to help me out? – Laxminarayan Alas Dec 11 '11 at 14:46
-
it may help You, please Refer this , http://stackoverflow.com/questions/759909/how-to-add-total-page-number-on-every-page-with-itext – Selvakumar Ponnusamy Dec 11 '11 at 19:44
2 Answers
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