I recently needed to add page numbers to a PDF document. After some searching I came across the blog post Adding page numbers to merged PDF, which explains it for some ColdFusion environment. I extracted the Java code allowing to do this in plain Java.
It’s simple, add the iText Java PDF library to your Java project, and use the following code as a base:
public static void main(String[] args) {
FileOutputStream outputStream = null;
try {
PdfReader reader = null;
try {
reader = new PdfReader("path/to/original/document.pdf");
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
outputStream = new FileOutputStream("/path/to/new/version/with/pagenum.pdf");
PdfStamper stamper = new PdfStamper(reader, outputStream);
BaseFont bf = BaseFont.createFont(BaseFont.TIMES_ROMAN, "UTF-8", true);
PdfContentByte over;
int pages = reader.getNumberOfPages();
for (int i = 1; i <= pages; i = i + 1) {
over = stamper.getOverContent(i);
over.beginText();
over.setFontAndSize(bf, 12);
over.setTextMatrix(30, 30);
over.showText(Integer.toString(i));
over.endText();
}
stamper.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
You can modify the over.setTextMatrix(30, 30); line to move the page numbers more to the right.
