【发布时间】:2016-08-22 10:04:23
【问题描述】:
如何将Java中的PDF文件内容完全提取为Text并呈现为HTML?
与单独提取文本或单独提取图像不同,要求是将 PDF 文件的内容(就像原始文件一样,包括原始文件中的图像和表格)作为 HTML 内容。
与此处Convert Word to HTML 的答案中的示例有些相似,它使用 Apache POI 将 MS Doc 文件的内容提取到 HTML 中。
【问题讨论】:
如何将Java中的PDF文件内容完全提取为Text并呈现为HTML?
与单独提取文本或单独提取图像不同,要求是将 PDF 文件的内容(就像原始文件一样,包括原始文件中的图像和表格)作为 HTML 内容。
与此处Convert Word to HTML 的答案中的示例有些相似,它使用 Apache POI 将 MS Doc 文件的内容提取到 HTML 中。
【问题讨论】:
从 PDF 文件中提取数据相当简单。有多个库可以正确执行此操作。另一方面,提取数据并保留其布局(OP 描述的工作流程)是一个非常困难的过程。其背后的原因很简单——大多数* PDF 文件实际上并没有任何定义结构的元素。例如,当一个PDF文件显示一个表格时,人们很容易看到它,并且理解这确实是一个包含一些数据的表格。但是,在 PDF 文件本身中,这是矢量线的集合,一些文本介于两者之间。 PDF 本身或 PDF 查看器不知道这是一个表格。因此,当这些数据转换为 HTML 时,我们并不知道需要绘制表格,而是将其视为矢量图。这只是为什么这很困难的一个例子。还有很多其他的可以用来说明这一点。
另一方面,"Tagged PDF" 存在这样的东西(第 10.7 节)。这是一个实际定义了结构元素的 PDF,提取起来相当容易。然而,带标签的 PDF 文件并不像我们希望的那样普遍,而且在大多数情况下,您不能保证使用一个。
市场上有一些工具使用复杂的逻辑来推断未标记文档的结构。他们中的一些人在这方面比其他人做得更好。我使用过 Adobe Acrobat,它在创建 HTML 文件方面做得不错。 Datalogics(我为 Datalogics 工作)还提供了一个名为 PDF Alchemist 的产品,可以将 PDF 转换为 HTML。它们都是商业解决方案。
如果您正在寻找免费的解决方案,PDFBox 在从 PDF 文档中提取内容方面做得很好。但是,它没有创建 HTML 文件的能力,这必须在库之外实现。我不知道有任何免费的 PDF 到 HTML 解决方案做得足够好,我愿意推荐。
【讨论】: