Вы используете PdfReader
метод getPageSize
, но вы должны использовать getPageSizeWithRotation
, то есть вы должны заменить
System.out.println(reader.getPageSize(i));
ColumnText.showTextAligned(pageContent, Element.ALIGN_RIGHT,
new Phrase(String.format("page %s of %s", i, n)),
reader.getPageSize(i).getWidth()- 20, 20, 0);
от
System.out.println(reader.getPageSizeWithRotation(i));
ColumnText.showTextAligned(pageContent, Element.ALIGN_RIGHT,
new Phrase(String.format("page %s of %s", i, n)),
reader.getPageSizeWithRotation(i).getWidth()- 20, 20, 0);
Фоны
Существуют два свойства страницы, отвечающие за конечное измерение отображаемой страницы: MediaBox и Поворот . (Давайте пока проигнорируем поле кадрирования и все остальные поля, которые также существуют.)
Таким образом, альбомную страницу формата A4 можно создать двумя концептуально разными способами: либо в виде медиа-бокса 842x595 с поворотом на 0 ° (или 180 °), либо в виде медиа-бокса 595x842 с поворотом на 90 ° (или 270 °).
Если вы создаете экземпляр Document
с помощью PageSize.A4.rotate()
, iText использует последний способ. (Если бы вы создали его с помощью new RectangleReadOnly(842,595)
, iText использовал бы прежний способ.)
PdfReader.getPageSize
только проверяет носитель. Таким образом, он возвращает прямоугольник шириной 595 для вашей страницы PDF с мультимедийным блоком 595x842 и поворотом на 90 °.
PdfReader.getPageSizeWithRotation
также проверяет поворот страницы. Таким образом, он возвращает прямоугольник шириной 842 для вашей страницы PDF с мультимедийным блоком 595x842 и поворотом на 90 °.