Python 办公自动化:快速将 HTML 转换为 PDF 格式

HTML(超文本标记语言)是一种用于创建网页的标准标记语言,主要用于定义内容的结构与布局,但当你需要将其作为本地文档展示或存档时,PDF 才是更加适合的选择。无论是生成电子发票、技术文档,还是导出美观的报表,PDF 都能跨平台地保留原始排版与视觉样式。在今天的文章中,我们就来看看如何在 Python 中将 HTML 快速转换为 PDF,实现高效与精准的文档处理。

准备工作

在开始编写代码之前,我们需要安装支持文档处理的 Python 库。本文将使用 Spire.Doc for Python,它能够解析 HTML 的 CSS 样式并将其精准地渲染到 PDF 页面中。你可以通过 pip 快速安装:

pip install Spire.Doc

也可以到 E-ICEBLUE 官网下载 Spire.Doc 安装包,然后进行自定义手动安装。此外,该产品还提供免费版,专门用于小型项目或购买商业版前的测试。

在 Python 中将 HTML 文件转换为 PDF

如果我们已经拥有现成的 HTML 静态文件,通过直接加载的方式进行转换是最为高效的选择。这种方法非常适合处理大量的网页存档、离线技术手册或自动生成的测试报告。在具体实现上,我们通过调用库中封装好的文件处理接口,能够确保 HTML 的层级结构被完整映射到文档模型中,从而实现格式的精准转换。

代码实现步骤:

  1. 创建一个 Document 类的对象。
  2. 调用 LoadFromFile 方法,加载 HTML 文件。
  3. 调用 SaveToFile 方法,将 HTML 保存为 PDF 格式的文件。

下方为代码实例,使用时注意将文件路径替换为真实路径:

from spire.doc import Document, FileFormat, XHTMLValidationType

# 创建 Document 类的对象
doc = Document()

# 载入本地 HTML 文件
doc.LoadFromFile("input/示例文档.html", FileFormat.Html, XHTMLValidationType.none)

# 将内容直接保存为 PDF 格式
doc.SaveToFile("output/HTML文件转PDF.pdf", FileFormat.PDF)
doc.Close()

HTML 文件与转换后的 PDF 文件对比示意图:

HTML 文件转换为 PDF

在 Python 中将 HTML 字符串转换为 PDF

对于动态生成的内容,例如从数据库调取数据并渲染到 HTML 模板的情况,直接处理字符串流比操作文件更加灵活。这种方式提高程序的响应速度和处理逻辑的连贯性。

在代码中,我们主要使用将字符串写入文档段落的方法来将其转换为标准的 PDF 文件。这样不仅能保持复杂的 CSS 样式,还能方便地与其它动态生成的文档元素进行拼接。

代码实现步骤:

  1. 创建文档对象后,依次添加 SectionParagraph
  2. 使用 AppendHTML 方法,将 HTML 字符串动态写入段落。
  3. 通过 SaveToFile 方法将整个文档结构渲染为 PDF 文件。
from spire.doc import Document, FileFormat

# 创建文档对象并添加结构
doc = Document()
sec = doc.AddSection() 
par = sec.AddParagraph() 

# 定义包含 CSS 样式的 HTML 字符串
html_string = """
<html>
<head>
    <style>
        h1 { color: #2c3e50; font-family: Arial; }
        table { border-collapse: collapse; width: 100%; }
        th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
        th { background-color: #f2f2f2; }
    </style>
</head>
<body>
    <h1>旅游统计报表</h1>
    <table>
        <tr><th>国家</th><th>收入(亿美元)</th></tr>
        <tr><td>法国</td><td>79.5</td></tr>
        <tr><td>美国</td><td>76.9</td></tr>
    </table>
</body>
</html>
"""

# 将 HTML 字符串渲染进段落
par.AppendHTML(html_string)

# 保存文档
doc.SaveToFile("E:/Administrator/Python1/output/HTML字符串转PDF.pdf", FileFormat.PDF)
doc.Close()

保存后的 PDF 文件预览:

转换 HTML 字符串为 PDF

进阶配置:转换时设置页边距与页面大小

直接将 HTML 文件或字符串转换为 PDF 虽然简便快捷,但在实际的应用中,默认的页面设置不一定能够匹配多种需求。因此,我们可以在转换前通过 PageSetup 类对 PDF 的页边距、纸张大小(如 A4、Letter)进行微调。

设置页边距:

# 设置页边距(单位通常为磅)
sec.PageSetup.Margins.Top = 50.0
sec.PageSetup.Margins.Bottom = 50.0
sec.PageSetup.Margins.Left = 40.0
sec.PageSetup.Margins.Right = 40.0

合理的页边距设置不仅能让文档看起来更专业,还能有效避免内容被裁切。

设置页面大小为 A4:

# 设置页面大小为 A4 纸张
# 还可以选择 Letter, Legal, A3 等其他标准预设
sec.PageSetup.PageSize = PageSize.A4()

# 也可以手动指定页面的宽度和高度(单位:磅)
# sec.PageSetup.PageSize = SizeF(600.0, 800.0)

设置页面大小有助于使内容能够适配打印输出或屏幕阅读。

总结

通过以上两种方法,我们可以轻松应对各种 HTML 转 PDF 的场景。无论是处理现有的文件库,还是动态渲染即时生成的网页数据,Spire.Doc for Python 都能提供简单高效的解决方案。如果你希望了解更多文档转换的内容,欢迎浏览主页或产品官网教程。

posted @ 2026-04-09 15:14  E-iceblue  阅读(0)  评论(0)    收藏  举报