使用 Python 实现 PDF 到 HTML 的转换【含代码详解】

PDF 文件因其稳定的排版效果,长期以来一直是文档共享、归档和分发的常用格式。但在实际开发过程中,当我们需要提取 PDF 内容、将文档嵌入网页,或者对文档进行二次处理时,PDF 固定的页面结构往往会增加处理难度。

相比之下,HTML 作为 Web 环境中的标准文档格式,不仅能够被浏览器直接解析,还具有良好的可访问性和搜索能力。因此,将 PDF 转换为 HTML 可以帮助开发者更方便地展示、检索和利用文档内容。

借助 Python 灵活易用的开发方式,我们可以快速实现 PDF 到 HTML 的自动化转换。本教程将结合 Spire.PDF for Python,介绍如何在 Python 环境中完成 PDF 转 HTML,主要包括以下内容:

  • 将 PDF 转换为单个 HTML 文件;
  • 批量转换多个 PDF 文件为 HTML;
  • 根据需求设置 HTML 输出效果,例如分离图片资源、拆分多个 HTML 文件等。

你可以通过 pip 快速安装 Spire.PDF for Python:

pip install Spire.PDF

通过 Python 快速将 PDF 转换为单个 HTML 文件

在 Spire.PDF for Python 中,PdfDocument 类用于表示 PDF 文档。通过该类中的 LoadFromFile() 方法可以加载 PDF 文件,再使用 SaveToFile() 方法将文档保存为 HTML 格式,即可完成 PDF 到 HTML 的转换。

如果 PDF 文档结构比较简单,不需要额外调整输出效果,那么直接转换是最快捷的方式。整个过程只需要创建 PdfDocument 对象、加载 PDF 文件并保存为 HTML 三个步骤。

下面代码展示了如何使用 Python 将 PDF 文件直接转换为 HTML:

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

# 创建 PdfDocument 对象
doc = PdfDocument()

# 加载 PDF 文件
doc.LoadFromFile("示例.pdf")

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

转换单个 PDF 文件为 HTML

转换完成后,生成的 HTML 文件会保留 PDF 中的文本、图片以及页面元素,并以单个 HTML 文件形式保存,适用于普通文档展示和简单网页集成场景。

通过 Python 批量将多个 PDF 转换为 HTML

在实际应用中,我们通常需要处理多个 PDF 文件,例如批量迁移旧文档、构建在线文档系统,或者将企业资料转换为网页格式。如果逐个打开 PDF 文件进行转换,不仅操作繁琐,也不利于自动化处理。此时,可以结合 Python 的文件遍历能力,批量读取指定文件夹中的 PDF 文件,并利用 Spire.PDF 完成自动转换。

下面示例会遍历目标文件夹中的所有 PDF 文件,并将每个 PDF 转换为对应的 HTML 文件:

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

# 设置 PDF 文件所在目录
inputFolder = "input/"

# 设置 HTML 输出目录
outputFolder = "output/HTML/"

# 遍历文件夹中的文件
for fileName in os.listdir(inputFolder):

    # 判断是否为 PDF 文件
    if fileName.endswith(".pdf"):

        # 创建 PdfDocument 对象
        doc = PdfDocument()

        # 加载 PDF 文件
        doc.LoadFromFile(inputFolder + fileName)

        # 设置输出 HTML 文件名
        htmlName = fileName.replace(".pdf", ".html")

        # 转换为 HTML
        doc.SaveToFile(outputFolder + htmlName, FileFormat.HTML)

        # 释放资源
        doc.Close()

print("PDF 批量转换 HTML 完成")

批量转换 PDF 为 HTML 文件

转换设置:控制 HTML 输出效果

在实际项目中,PDF 转 HTML 往往不仅仅是简单转换。例如:

  • 网页展示时希望减少 HTML 文件体积;
  • 需要单独管理 PDF 中的图片资源;
  • 大型 PDF 文档需要拆分成多个 HTML 页面。

针对这些需求,Spire.PDF 提供了 HTML 转换选项,可以通过 ConvertOptions 属性下的 SetPdfToHtmlOptions() 方法调整转换效果。

该方法支持以下参数:

参数 说明
useEmbeddedSvg(bool) 是否将 SVG 内容嵌入 HTML 文件
useEmbeddedImg(bool) 是否将图片嵌入 HTML 文件
maxPageOneFile(int) 设置单个 HTML 文件包含的最大 PDF 页数
useHighQualityEmbeddedSvg(bool) 是否使用高质量 SVG 图片

通过合理配置这些参数,可以根据不同使用场景生成更加适合的 HTML 文件。

将 PDF 转换为不嵌入图片的 HTML

默认情况下,转换后的 HTML 文件会包含 PDF 中的图片资源。如果希望 HTML 文件结构更加清晰,或者需要单独处理图片文件,可以关闭资源嵌入功能。

通过设置 useEmbeddedSvg 参数为 False,PDF 中的图片和 CSS 文件会被单独保存,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转不嵌入图片HTML.html", FileFormat.HTML)

# 释放资源
doc.Close()

将 PDF 拆分转换为多个 HTML 文件

对于页数较多的 PDF 文档,如果全部转换为一个 HTML 文件,可能导致文件体积过大,影响页面加载速度。此时,可以使用 maxPageOneFile 参数控制每个 HTML 文件包含的 PDF 页面数量。例如,将该参数设置为 1,即可实现每一页 PDF 转换为一个独立的 HTML 文件。

需要注意的是,该功能需要在关闭 SVG 嵌入的情况下使用。

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

# 创建 PdfDocument 对象
doc = PdfDocument()

# 加载 PDF 文件
doc.LoadFromFile("示例.pdf")

# 设置转换选项:
# 不嵌入 SVG、不嵌入图片,每个 HTML 文件包含 1 页 PDF
doc.ConvertOptions.SetPdfToHtmlOptions(False, False, 1, False)

# 转换 PDF
doc.SaveToFile("output/HTML/PDF拆分HTML.html", FileFormat.HTML)

# 释放资源
doc.Close()

总结

将 PDF 转换为 HTML 可以有效提升文档内容的可访问性和可利用性。在本文中,我们介绍了如何使用 Spire.PDF for Python 实现 PDF 到 HTML 的转换,包括直接转换单个 PDF 文件、批量处理多个 PDF 文档,以及通过转换选项控制 HTML 输出效果。

在实际开发中,可以根据业务需求选择合适的转换方式:简单场景下直接转换即可快速生成 HTML;面对大量文档时,可以结合 Python 文件处理能力实现批量转换;如果需要优化网页展示效果,则可以通过设置图片嵌入、页面拆分等参数调整输出结果。

借助 Spire.PDF for Python,开发者无需编写复杂的 PDF 解析逻辑,只需调用简单 API,即可高效完成 PDF 到 HTML 的自动化转换。

posted @ 2026-07-31 17:48  E-iceblue  阅读(2)  评论(0)    收藏  举报