惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
SegmentFault 最新的问题
博客园 - 三生石上(FineUI控件)
雷峰网
雷峰网
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
博客园 - 【当耐特】
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
V2EX
V
Visual Studio Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 聂微东
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
U
Unit 42
W
WeLiveSecurity
博客园 - Franky
Recent Announcements
Recent Announcements
Hacker News - Newest:
Hacker News - Newest: "LLM"
Attack and Defense Labs
Attack and Defense Labs
月光博客
月光博客
The Cloudflare Blog
Spread Privacy
Spread Privacy
腾讯CDC
P
Privacy International News Feed
N
News and Events Feed by Topic
AWS News Blog
AWS News Blog
NISL@THU
NISL@THU
T
Troy Hunt's Blog
小众软件
小众软件
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Microsoft Security Blog
Microsoft Security Blog
L
Lohrmann on Cybersecurity
Webroot Blog
Webroot Blog
Y
Y Combinator Blog
量子位
P
Palo Alto Networks Blog
N
News and Events Feed by Topic
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
IT之家
IT之家
T
Threat Research - Cisco Blogs
Cloudbric
Cloudbric
云风的 BLOG
云风的 BLOG
C
Check Point Blog
Blog — PlanetScale
Blog — PlanetScale
爱范儿
爱范儿
G
Google Developers Blog
S
Secure Thoughts

博客园 - E-iceblue

Python 拆分 Excel 文件:使用 Spire.XLS 实现按工作表、行、列和条件拆分 如何使用 Python 快速将 Excel 转换为 XML 文件 Python 办公自动化:Word 文档加密与权限控制实战 在 Python 中快速锁定 Excel 单元格与行列 使用 Python 在 Word 文档中添加或删除文本框 如何使 PDF 可编辑 - Python 教程详解 将 Excel 表格插入 Word 文档的三种实用方案(Python 自动化) Python 办公自动化:如何轻松调整 Word/PDF 页面大小为 Legal 尺寸 数字签名 vs 电子签名:区别与如何在文件中插入数字签名 Python 教程:快速复制 Excel 工作表 如何对比 Excel 两列数据的不同:从基础操作到 Python 自动化 如何提取 Word 文档中的表格并导出为 Excel(Python 教程) 使用 Python 在 PowerPoint 中添加或移除背景图和背景颜色 在 Java 中使用 Spire.PDF 合并 PDF 文档(含加密与压缩处理) 在 Python 中自动化转化 Markdown 为 HTML 【详细教程】 Python 控制 PDF 页面大小、页边距、页面方向与缩放 在 Python 中给 PDF 设置背景图或背景色 在 Python 中转换 XML 为 PDF 文档:基础转换与转换设置 在 Python 中对比 Word 文档:自动生成修订报告【教程向】 Excel 删除空白行的 5 种方法 【手动与 Python 自动化】 删除 Excel 表格中的重复行 【4 种实用方法】 从纯文本到精美文档:TXT 转 PDF 的三种高效方案 Python 实现 PDF 表单域的自动化创建与智能填充 PPT 批量转图片:在 Web 预览中实现翻页效果(C#/VB.NET) 为什么生成的条形码扫不出来?从静区、分辨率和色彩三个方向解析条码识别率 Excel vs CSV:在系统数据处理中该如何选择?(附格式转换代码示例) 【2026 最新教程】Java 自动化提取 PDF 表格:从文本到 Excel/CSV 的全场景实现 零成本实现文档智能:本地化 OCR 提取与 AI 处理全流程实战 PPT 智能提取与分析实战:把演示文档变成结构化数据 为什么 PDF 文本能看到,却提取不到?从开发者角度解析与解决方案 PDF 文件为什么打不开?常见原因与解决思路 PDF vs PDF/A:区别、场景与常用转换方法(2026 全面解读) 使用 Java 将 PowerPoint 转换为 PDF 的完整指南 如何在 Python 中轻松添加、隐藏和删除幻灯片
Python 办公自动化:快速将 HTML 转换为 PDF 格式
E-iceblue · 2026-04-09 · via 博客园 - E-iceblue

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 都能提供简单高效的解决方案。如果你希望了解更多文档转换的内容,欢迎浏览主页或产品官网教程。