2

我们探索了很多 API,如 tika、Pdfbox 和 itextpdf 来从 pdf 文件中提取页码,但我们无法做到这一点。在 itextpdf 中,我们得到了 PdfPageLabels.getPageLabels(reader) 但此方法的行为并不统一。

4

1 回答 1

3

您找不到任何能够从 PDF 中提取页码的软件的原因很简单:PDF 中不存在页码的概念。

请允许我预测你的反应。

*“等一下!” 你说,“当我在 Adob​​e Reader 中打开 PDF 时,我可以清楚地看到文档中的页码!”

嗯,是的,你可以用你的眼睛和人类的智慧看到那个页码,但对于一台机器来说,这个数字只是画在画布上的一些文本。使用文档的机器不知道页面上的所有字形、线条和形状是关于什么的。因此,软件无法为您提供您作为人类看到的页码。机器不知道去哪里找!

如果您对 PDF 有所了解,我可以预测您的下一个回复。

“等一下!” 你说,“Tagged PDF 怎么样?Tagged PDF 不意味着文档的语义与表示一起存储吗?”

嗯,是的,当一个 PDF 被标记时,一段文本知道它是标题、段落或列表的一部分,......但是标记的 PDF 是用来定义真实内容的结构的。然而,页码并不是真实内容的一部分。它们与页眉、页脚和页面上其他不被视为真实内容的项目一起被标记为工件。没有办法区分页码。

“那么这些页面标签是关于什么的?” 你问。

好吧,页面标签是可选的。它们存在于一些精心构思的 PDF 中,但它们将不存在于您在野外找到的大多数 PDF 中。

这是很长的答案。简短的回答很简单:您要求的是不可能的事情(通常,不仅是 iText、Tika、PdfBox 或您可能尝试的任何其他工具)。

于 2014-10-31T11:36:05.907 回答