NullPointerException при получении информации о странице - PullRequest
1 голос
/ 12 марта 2019

Мне нужно определить ориентацию страницы моего документа PDF.При этом я пытаюсь получить размеры страниц для отдельных страниц:

pdfGen = createPdf.makePdf("doc.pdf");
document = pdfGen.getDocument();
document.setMargins(80, 80, 80, 80);
writer = pdfGen.getWriter();

document.add(new Paragraph("some content"));

document.add(new AreaBreak(PageSize.A4.rotate()));
document.add(new Paragraph("more content"));

document.add(new AreaBreak(PageSize.A4));
document.add(new Paragraph("even more content"));

Rectangle rect = document.getPdfDocument().getPage(1).getPageSizeWithRotation(); // e.g. the 1st page

document.close();
writer.close();

Но все, что я получаю, это NullPointerException в этой строке: Rectangle rect = document.getPdfDocument().getPage(1).getPageSizeWithRotation().


java.lang.NullPointerException
    at com.itextpdf.kernel.pdf.PdfDictionary.get(PdfDictionary.java:456)
    at com.itextpdf.kernel.pdf.PdfDictionary.getAsArray(PdfDictionary.java:156)
    at com.itextpdf.kernel.pdf.PdfPage.getMediaBox(PdfPage.java:516)
    at com.itextpdf.kernel.pdf.PdfPage.getPageSize(PdfPage.java:125)
    at com.itextpdf.kernel.pdf.PdfPage.getPageSizeWithRotation(PdfPage.java:134)
    at com.myPackage.MyClass.myFunc(MyClass.java:15)
// ...

Ответы [ 2 ]

2 голосов
/ 13 марта 2019

Это потому, что включен режим немедленного сброса.

Либо сохраните необходимую информацию заранее, либо используйте конструктор с тремя аргументами для создания документа:

Document document = new Document(pdfDoc, PageSize.A4, true);

Как указано вдокументация для immediateFlush: если true, запишите страницы и инструкции, связанные со страницей, в {@link PdfDocument} как можно скорее. Это сделано для уменьшения использования памяти.

0 голосов
/ 12 марта 2019

Нулевое значение:

  • document
  • document.getPdfDocument()
  • document.getPdfDocument().getPage(1)

Myдумаю, это, вероятно, последний, но вы должны проверить их все.

Вы также можете обнаружить, что метод getFirstPage() означает, что вы не запутаетесь, если первая страница равна 0или 1 проиндексирован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...