使用Python 实现 PDF 到 HTML 的转换

PDF 文件是共享和分发文档的常用选择,但提取和再利用 PDF 文件中的内容可能会非常麻烦。而利用 Python 将 PDF 文件转换为 HTML 是解决此问题的理想方案之一,这样做可以增强文档可访问性,使文档可搜索,同时增强文档在不同场景中的实用性。此外,HTML 格式使得搜索引擎能够对内容进行索引,从而更有可能在网络上被发现。借助 Python 的灵活性和易用性,无论是初学者还是有经验的开发人员都可以轻松高效地使用 Python 来将 PDF 转换为 HTML。

本文重点介绍如何在 Python 程序中将 PDF 转换为 HTML,主要包括以下内容:

  • 使用Python 将 PDF 转换为 HTML 方法概览
  • 使用 Python 代码将 PDF 转换为单个 HTML 文件
  • 使用 Python 将 PDF 转换为不嵌入图像的 HTML
  • 使用 Python 将 PDF 转换为多个 HTML 文件

本文介绍的方法使用了 Spire.PDF for Python 工具,可以从官网下载,也可以通过 PyPI 进行安装:

pip install Spire.PDF

 

Python PDF 转 HTML 方法概览

在 Spire.PDF for Python 中,PdfDocument 类表示一个 PDF 文档。我们可以使用该类下的 LoadFromFile() 方法加载 PDF 文件,然后使用 SaveToFile() 方法将文档保存为其他格式,如 HTML,从而轻松实现从 PDF 到 HTML 的转换。

此外,该 API 还提供了 PdfDocument.ConvertOptions 属性下的 SetConvertHtmlOptions() 方法,用于在转换过程中设置转换选项。以下是可以传递给该方法的参数,用于设置最大页数、SVG 嵌入选项、图像嵌入选项和 SVG 质量选项:

  • useEmbeddedSvg(bool):当设置为 True 时,允许在转换后的 HTML 文件中嵌入 SVG。生成的 HTML 文件将包含 PDF 文档中的所有元素,包括图像,都在一个 HTML 文件中。
  • useEmbeddedImg(bool):当设置为 True 时,允许在转换后的 HTML 文件中嵌入图像。此参数仅在 useEmbeddedSvg 设置为 False 时起作用。
  • maxPageOneFile(int):设置单个 HTML 文件中包含的最大页数。如果 PDF 的页数超过指定的数字,将生成多个 HTML 文件,每个文件包含部分页数。
  • useHighQualityEmbeddedSvg(bool):当设置为 True 时,在 HTML 转换过程中确保使用高质量的嵌入 SVG 图像。

 

使用 Python 将 PDF 转换为单个 HTML 文件

以下代码示例展示了如何直接使用 Python 将 PDF 转换为 HTML,不设置任何转换选项。在这种情况下,我们只需要使用 LoadFromFile 方法加载 PDF 文件,并使用 SaveToFile 方法将其保存为 HTML 文件。转换后的 HTML 文件将是一个包含嵌入图像和其他元素的单个 HTML 文件。

from spire.pdf.common import *
from spire.pdf import *

# 创建一个PdfDocument类的对象
doc = PdfDocument()

# 加载一个PDF文档
doc.LoadFromFile("示例.pdf")

# 将文档转换为HTML
doc.SaveToFile("output/HTML/PDF转HTML.html", FileFormat.HTML)
doc.Close()

转换效果:

 

使用 Python 将 PDF 转换为不嵌入图像的 HTML

通过将 useEmbeddedSvg 参数设置为 False,我们可以将 PDF 文档转换为不嵌入图像等信息的单 HTML 文件,文档中的图像和 CSS 文件与 HTML 分离并存储在一个文件夹中。这样可以方便对转换后的 HTML 文件进行进一步编辑,以及对图像进行其他操作。

from spire.pdf.common import *
from spire.pdf import *

# 创建一个PdfDocument类的对象
doc = PdfDocument()

# 加载一个PDF文档
doc.LoadFromFile("示例.pdf")

# 禁用SVG嵌入
doc.ConvertOptions.SetPdfToHtmlOptions(False)

# 将文档转换为HTML
doc.SaveToFile("output/HTML/PDF转不嵌入SVG的HTML.html", FileFormat.HTML)
doc.Close()

转换结果:

 

使用 Python 将 PDF 转换为多个 HTML 文件

在 useEmbeddedSvg 设置为 False 的前提下,SetPdfToHtmlOptions 方法允许使用 maxPageOneFile(int) 参数确定每个转换后的 HTML 文件中包含的最大页数。此功能可实现将 PDF 文档在转换过程中拆分成多个文件。例如,将该参数设置为 1 将使每个页面被转换为一个单独的 HTML 文件。

from spire.pdf.common import *
from spire.pdf import *

# 创建一个PdfDocument类的对象
doc = PdfDocument()

# 加载一个PDF文档
doc.LoadFromFile("示例.pdf")

# 禁用SVG嵌入
doc.ConvertOptions.SetPdfToHtmlOptions(False, False, 1, False)

# 将文档转换为HTML
doc.SaveToFile("output/HTML/PDF转多个HTML.html", FileFormat.HTML)
doc.Close()

转换结果:

 

总结

本文演示了如何使用 Python 将 PDF 转换为 HTML,并提供了多种转换选项,例如转换为单个 HTML 文件、将 HTML 文件与图像分离以及在转换过程中拆分 PDF 文档。借助 Spire.PDF for Python,用户可以使用简单高效的方法进行 Python 中的 PDF 到 HTML 转换,并支持灵活的自定义选项。

如果在使用该 API 进行 PDF 到 HTML 转换时遇到任何问题,用户可以在 Spire 产品论坛上寻求技术支持。

 

热门相关:医道至尊   豪门退婚妻:宝贝,再嫁我一次!   极品医圣   人族镇守使   全能千金燃翻天