使用Python将HTML快速转换成PDF

大家好,在Web开发和报告任务中,将HTML内容转换为PDF是一种常见需求。Python作为一个庞大的生态系统,提供了各种库来完成这个任务。本文将指导完成使用Python将HTML转换为PDF的过程,包括一个示例实现和一个单元测试。我们将使用pdfkit库,该库是wkhtmltopdf命令行工具的Python封装。

要开始学习,需要在系统中已安装Python,并使用pip安装pdfkit库:

python 复制代码
pip install pdfkit

下面是具体的4个操作步骤。

1.设置项目

  • 为项目创建一个新目录。

  • 创建一个用于PDF转换代码的Python文件,例如html_to_pdf.py。

  • 可选择为测试创建一个单独的目录。

2.编写HTML到PDF转换代码

在html_to_pdf.py中,编写以下函数:

python 复制代码
import pdfkit

def convert_html_to_pdf(source_html, output_filename):
    pdfkit.from_string(source_html, output_filename)
    return output_filename

这个函数convert_html_to_pdf,以字符串形式接收HTML内容和输出文件名,然后使用pdfkit生成一个PDF文件。

3.创建使用示例

创建一个示例来演示转换:

python 复制代码
# example.py
from html_to_pdf import convert_html_to_pdf

html_content = "
Hello World
"
pdf_filename = "output.pdf"

convert_html_to_pdf(html_content, pdf_filename)

运行example.py将把指定的HTML内容转换为名为output.pdf的PDF文件。

4.编写单元测试

创建一个测试文件test_html_to_pdf.py:

python 复制代码
import unittest
import os
from html_to_pdf import convert_html_to_pdf

class TestHtmlToPdf(unittest.TestCase):
    def test_html_to_pdf_conversion(self):
        html_content = "
Test PDF

"
        output_filename = "test.pdf"

        result = convert_html_to_pdf(html_content, output_filename)
        
        self.assertTrue(os.path.exists(result))
        self.assertEqual(result, output_filename)
        
        # 清理
        os.remove(output_filename)

if __name__ == '__main__':
    unittest.main()

这个单元测试检查PDF文件是否已创建并存储在指定位置。

使用以下命令运行测试:

python 复制代码
python -m unittest test_html_to_pdf

综上,在Python中将HTML转换为PDF使用pdfkit和wkhtmltopdf等工具是高效且实用的,此功能对于网络爬虫、报告生成和将网页转换为可打印格式都非常有用。单元测试的集成确保了转换代码的可靠性,使其成为Python项目的一个强大组成部分。

相关推荐
热爱生活的五柒3 小时前
zotero能导入已经下载好的pdf文件嘛,并且点击条目时,能直接看到下载的pdf文件嘛,我还希望能在里面做笔记
笔记·pdf
开开心心就好6 小时前
白天晚上自动调蓝光,护眼工具亮度可调
服务器·开发语言·算法·pdf·ocr·intellij-idea·idea
asdzx676 小时前
C# 将 HTML 转换为 PDF:基于 Chrome 的转换方案
pdf·c#·html
电子阿板7 小时前
Altium Designer 横向纵向图纸混合时,输出PDF时让每个图纸自动方向方法
pdf
andrsted8 小时前
练题簿在线免费刷题:将资料、Word 和 PDF导入小程序练习
学习·微信小程序·小程序·pdf·word·学习方法
Eyfcom8 小时前
〖实战〗跨境报关单证自动化:XML 报文生成、PDF 套打与单一窗口同步上传的工程实现
xml·pdf·自动化·报关单证·清关自动化
开开心心就好9 小时前
安卓PDF处理工具,免费无广告零弹窗
android·服务器·开发语言·算法·pdf·ocr
原子延迟1 天前
iLovePDF免费吗?不限次数的PDF压缩5款(2026)
图像处理·人工智能·计算机视觉·pdf
2601_965454231 天前
AI视频制作:券商研报怎么转口播视频:PDF 解读、配音和图表自动成片的方法
人工智能·pdf·音视频
reasonsummer2 天前
【办公类-53-12】20261016(预测)Python模仿制作2026学年第二学期校历(excel+pdf,上下学期都包含)
pdf·excel