If you are using the current version of iText (i.e. 5.4.x at the moment), look at the MovieHistory2 sample from iText in action - the second edition , which shows how to add headings (different for odd and even pages) to PDF when it creating.
Most important is the implementation of PdfPageEventHelper
class HeaderFooter extends PdfPageEventHelper { Phrase[] header = new Phrase[2]; int pagenumber; public void onOpenDocument(PdfWriter writer, Document document) { header[0] = new Phrase("Movie history"); } public void onChapter(PdfWriter writer, Document document, float paragraphPosition, Paragraph title) { header[1] = new Phrase(title.getContent()); pagenumber = 1; } public void onStartPage(PdfWriter writer, Document document) { pagenumber++; } 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, header[0], rect.getRight(), rect.getTop(), 0); break; case 1: ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_LEFT, header[1], rect.getLeft(), rect.getTop(), 0); break; } ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase(String.format("page %d", pagenumber)), (rect.getLeft() + rect.getRight()) / 2, rect.getBottom() - 18, 0); } }
which is registered as follows:
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT)); HeaderFooter event = new HeaderFooter(); writer.setBoxSize("art", new Rectangle(36, 54, 559, 788)); writer.setPageEvent(event);
EDIT: As requested in the comments, a simpler version of the onEndPage method with a static header instead of alternating:
public void onEndPage(PdfWriter writer, Document document) { Rectangle rect = writer.getBoxSize("art"); ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_RIGHT, new Phrase("My static header text"), rect.getRight(), rect.getTop(), 0); ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase(String.format("page %d", pagenumber)), (rect.getLeft() + rect.getRight()) / 2, rect.getBottom() - 18, 0); }