java - 获取页面信息时出现 NullPointerException
问题描述
我需要检测我的 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)
// ...
解决方案
那是因为启用了立即刷新模式。
预先保存所需的信息或使用三参数构造函数来创建文档:
Document document = new Document(pdfDoc, PageSize.A4, true);
正如文档中所述immediateFlush
:如果为真,请尽快将页面和与页面相关的说明写入 {@link PdfDocument}。这样做是为了减少内存使用量。
推荐阅读
- python - 展示十二班学生
- javascript - 如何为每个用户电子邮件设置单独的 IndexedDb 存储
- django - Django UserCreationForm 将弹出验证错误转换为内联错误
- java - 为什么spring类AbstractAuditable扩展了AbstractPersistable?
- three.js - 将 Three.ObjectSelection id 与 GRAPHVIS.Node(0) 中的 node.id 关联起来
- c++ - 文本文件行删除
- python - 使用python从概念中提取数据
- apache - 全局阻止所有 xmlrpc.php 请求 cpanel 服务器
- ms-access - 使用日期范围从数据库生成可打印报告
- java - RecyclerView 中的 Exoplayer