java - 在java中提取PDF文件并渲染为HTML

标签 java pdf

如何在java中将PDF文件内容完全提取为文本并呈现为HTML?

与仅单独提取文本或仅单独提取图像不同,要求是将 PDF 文件的内容(如原始文件一样 - 意味着在原始文件中的位置包括图像和表格)显示为 HTML 内容。

有些与此处答案中的示例相似Convert Word to HTML使用 Apache POI,它使用 Apache POI 将 MS Doc 文件的内容提取为 HTML。

最佳答案

从 PDF 文件中提取数据相当简单。有多个库可以正确执行此操作。另一方面,提取数据并保留其布局(OP 描述的工作流程)是一个非常困难的过程。其背后的原因很简单 - 大多数* PDF 文件实际上没有任何定义结构的元素。例如,当 PDF 文件显示一个表格时,人们很容易看到它,并理解这确实是一个包含一些数据的表格。然而,在 PDF 文件本身中,这是 vector 线的集合,并且一些文本介于其间。 PDF 本身或 PDF 查看器并不知道这是一个表格。因此,当这些数据转换为 HTML 时,我们不知道我们需要绘制表格,而是将其视为 vector 艺术。这只是为什么这很困难的一个例子。还有很多其他的东西可以用来说明这一点。

另一方面,这样的东西存在 "Tagged PDF" (第 10.7 节)。它是一个 PDF,其中实际定义了结构元素,并且提取相当容易。然而,带标签的 PDF 文件并不像我们希望的那样常见,而且在大多数情况下,我们不能保证您可以使用该文件。

市场上有一些工具使用复杂的逻辑来推断未标记文档的结构。他们中的一些人在这方面比其他人做得更好。我曾使用过 Adob​​e Acrobat,它在创建 HTML 文件方面做得不错。 Datalogics(我在 Datalogics 工作)还提供了一个名为 PDF Alchemist 的产品,可以将 PDF 转换为 HTML。它们都是商业解决方案。

如果您正在寻找免费的解决方案,PDFBox 在从 PDF 文档中提取内容方面做得很好。然而,它没有创建 HTML 文件的能力,这必须在库外部实现。我不知道有任何免费的 PDF 到 HTML 解决方案可以做得足够好,但我愿意推荐。

关于java - 在java中提取PDF文件并渲染为HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39076634/

相关文章:

java - 如何实现DB并发?

java - 如果发送 JMS 消息时没有 JMSPriority header ,会发生什么情况

java - 将元数据添加到现有 pdf 文件

java - 使用java Itext获取字体颜色

java - PDFBox 2 栏问题 如何检查珠子

linux - 基于服务器的 Microsoft Office 到 PDF 转换器?

java - 使用 Windows 安装程序分发 Java Web 应用程序

java - 如何在 View 上设置背景而不影响其尺寸?

java - Hibernate:如何自动创建具有所有数据库字段的实体类

macos - 使用 Cocoa 替换 PDF 中的文本