Да, с некоторыми ограничениями.
Сложно, но не невозможно определить, что уже есть на существующей странице.
Если все, что вы хотите сделать, это добавить "страницу X из Y" в левый нижний угол всех ваших страниц, это easy .
PdfReader reader = new PdfReader( inPath );
PdfStamper stamper = new PdfStamper( reader, new FileOutputStream( outPath ) );
BaseFont font = BaseFont.createFont(); // Helvetica, WinAnsiEncoding
for (int i = 0; i < reader.getNumberOfPages(); ++i) {
PdfContentByte overContent = stamper.getOverContent( i + 1 );
overContent.saveState();
overContent.beginText();
overContent.setFontAndSize( font, 10.0f );
overContent.setTextMatrix( xLoc, yLoc );
overContent.showText( "Page " + (i + 1) + " of " + reader.getNumberOfPages() );
overContent.endText();
overContent.restoreState();
}
stamper.close();
Большой водяной знак не намного сложнее. Добавление вещей в PDF в одном или нескольких заранее определенных местах вполне выполнимо.
На другом конце спектра "изменить текст в существующих абзацах и перекрасить их". Это почти невозможно. Было бы намного проще восстановить исходный PDF с новыми данными.
На самом деле, если это вообще возможно, просто восстановите их. Ты сделал это один раз, сделай это снова.