【问题标题】:PDFBox - document is empty after loadingPDFBox - 加载后文档为空
【发布时间】:2015-08-25 07:59:40
【问题描述】:

我正在使用 Apache PDFBox 来呈现 PDF 文档的缩略图。因此,我加载 PDF 并将第一页用作缩略图。问题是,对于一个特定的文档,它似乎没有正确加载。对于所有其他文档,它按预期工作。

ByteArrayInputStream is = new ByteArrayInputStream(pdfData);

PDDocument pdf = PDDocument.load(is, true);

List<PDPage> pages = pdf.getDocumentCatalog().getAllPages(); //pages is empty here

pdf 文件有 238 页,大小约为 6.5 MB。

【问题讨论】:

  • 试试 loadNonSeq(is,null) - 那么它可以工作吗?
  • 谢谢,loadNonSeq 有效。由于我没有找到任何文档,您是否知道,如果使用 loadNonSeq 代替 load,是否会对性能产生重大影响?
  • 可能是。 issues.apache.org/jira/browse/PDFBOX-2860 但是 nonSeq 解析器是正确的。旧的在 2.0 版本中不再存在。然而,大部分时间都花在了渲染上,而不是解析上(取决于图像的大小)。
  • 好的,谢谢,那我就用loadNonSeq去观察性能。
  • 我已经添加了一个答案,所以这个问题不是孤立的。

标签: pdf pdfbox


【解决方案1】:

假设您使用的是 1.8.* 版本,请使用非顺序解析器:

PDDocument pdf = PDDocument.loadNonSeq(is, null);

在旧解析器失败的某些情况下,非顺序解析器是成功的,例如对于已修订的 PDF (example)。另一个优点是,使用空密码加密的“受保护”PDF 不需要额外的代码。

【讨论】:

  • 非顺序解析器,此外,根据规范解析更多,即更正确,还有另一个优势......
  • 提示:当前版本是 1.8.10 :-)
猜你喜欢
  • 1970-01-01
  • 2014-09-19
  • 2011-10-26
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多