为了账号安全,请及时绑定邮箱和手机立即绑定

NullPointer获取页面信息时的异常

NullPointer获取页面信息时的异常

一只名叫tom的猫 2022-08-03 16:25:52
我需要检测 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 pagedocument.close();writer.close();但我得到的只是这行: .NullPointerExceptionRectangle 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 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

这是因为启用了立即刷新模式。

要么事先保存所需的信息,要么使用三个参数构造函数来创建文档:

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

正如文档中所述:如果为真,请尽快将页面和页面相关说明写入{@link PdfDocument}。这样做是为了减少内存使用量。immediateFlush


查看完整回答
反对 回复 2022-08-03
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

以下情况之一为空:

  • document

  • document.getPdfDocument()

  • document.getPdfDocument().getPage(1)

我猜这可能是最后一个,但你应该把它们都检查出来。

您可能还会发现使用getFirstPage()方法意味着如果第一页是0或1索引,您不会感到困惑。


查看完整回答
反对 回复 2022-08-03
  • 2 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信