Java 如何从PDF文件中提取页码

Java 如何从PDF文件中提取页码,java,pdf,pdfbox,itextpdf,Java,Pdf,Pdfbox,Itextpdf,我们探索了很多API,比如tika、Pdfbox和itextpdf,从pdf文件中提取页码,但我们没有做到这一点。在itextpdf中,我们得到了PdfPageLabels.getPageLabels(reader),但这种方法的行为并不一致。您找不到任何能够从PDF中提取页码的软件的原因很简单:PDF中不存在页码的概念 请允许我预测你的反应 *“等一下!”你说,“当我在Adobe Reader中打开PDF时,我可以清楚地看到文档中的页码!” 是的,你可以用你的眼睛和你的人类智能看到页码,但对机

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

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

请允许我预测你的反应

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

是的,你可以用你的眼睛和你的人类智能看到页码,但对机器来说,页码只是画布上的一些文本。使用文档的机器不知道页面上的所有字形、线条和形状是关于什么的。因此,软件不能给你一个人看到的页码。机器不知道去哪里找

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

“等等!”你说,“带标签的PDF呢?带标签的PDF不意味着文档的语义与表示一起存储吗?”

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

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

嗯,页面标签是可选的。它们存在于一些构思良好的PDF中,但在野外发现的绝大多数PDF中都不存在


这是一个很长的答案。简短的回答很简单:你要求的是一些不可能的东西(通常,不仅仅是使用iText、Tika、PdfBox或任何其他你可能尝试的工具)。

你至少可以得到总页数-