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.