Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Fix:
использовать
PdfStamper.getImportedPage(pdfReader, pagenumber).getBoundingBox().getWidth()
вместо
stamper.getOverContent(i).getPdfDocument().getPageSize().getWidth();
Существует два метода удобства, названных getPageSize()
и getPageSizeWithRotation()
.
Давайте посмотрим на пример:
PdfReader reader =
new PdfReader("src/main/resources/pages.pdf");
show(reader.getPageSize(1));
show(reader.getPageSize(3));
show(reader.getPageSizeWithRotation(3));
show(reader.getPageSize(4));
show(reader.getPageSizeWithRotation(4));
В этом примере show()
выглядит следующим образом:
public static void show(Rectangle rect) {
System.out.print("llx: ");
System.out.print(rect.getLeft());
System.out.print(", lly: ");
System.out.print(rect.getBottom());
System.out.print(", urx: ");
System.out.print(rect.getRight());
System.out.print(", lly: ");
System.out.print(rect.getTop());
System.out.print(", rotation: ");
System.out.println(rect.getRotation());
}
Это вывод:
llx: 0.0, lly: 0.0, urx: 595.0, lly: 842.0, rotation: 0
llx: 0.0, lly: 0.0, urx: 595.0, lly: 842.0, rotation: 0
llx: 0.0, lly: 0.0, urx: 842.0, lly: 595.0, rotation: 90
llx: 0.0, lly: 0.0, urx: 842.0, lly: 595.0, rotation: 0
llx: 0.0, lly: 0.0, urx: 842.0, lly: 595.0, rotation: 0
Page 3 (см. строку 4 в примере кода 3.8) является страницей A4, как страница 1 , но он ориентирован в ландшафте. Запись /MediaBox
идентична записи, используемой для первой страницы [0 0 595 842]
, и поэтому getPageSize()
возвращает тот же результат.
Страница находится в альбомной ориентации, потому что запись \Rotate
в для словаря страницы установлено значение 90
. Возможные значения для этой записи: 0
(это значение по умолчанию, если запись отсутствует), 90
, 180
и 270
.
Метод getPageSizeWithRotation()
принимает это значение в Счет. Он меняет ширину и высоту, чтобы вы знали о различии. Он также дает вам значение записи /Rotate
.
Page 4 также имеет ландшафтную ориентацию, но в этом случае вращение имитируется путем адаптации записи /MediaBox
. В этом случае значение /MediaBox
равно [0 0 842 595]
, и если есть запись /Rotate
, его значение равно 0
.
Это объясняет, почему вывод метода getPageSizeWithRotation()
идентичен к выходу метода getPageSize()
.
Когда я прочитал ваш вопрос, я вижу, что вы ищете поворот. Это можно сделать с помощью метода getRotation()
.
Примечание: Этот текст скопирован из моей книги «ABC of PDF» (книга находится в разработке, вы можете скачать первые главы бесплатно). Образец кода можно найти здесь здесь .