使用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使用pdfkitwkhtmltopdf等工具是高效且实用的,此功能对于网络爬虫、报告生成和将网页转换为可打印格式都非常有用。单元测试的集成确保了转换代码的可靠性,使其成为Python项目的一个强大组成部分。

相关推荐
belldeep19 分钟前
python:reportlab 将多个图片合并成一个PDF文件
python·pdf·reportlab
墨染辉5 小时前
pdf处理2
pdf
墨染辉16 小时前
10.2 如何解决从复杂 PDF 文件中提取数据的问题?
pdf
shandianchengzi20 小时前
【记录】Excel|Excel 打印成 PDF 页数太多怎么办
pdf·excel
bianshaopeng1 天前
android 原生加载pdf
android·pdf
卢卡斯2331 天前
在线PDF怎么转换成JPG图片?分享14种转换操作!
pdf
J不A秃V头A2 天前
iTextPDF中,要实现表格中的内容在数据长度超过边框时自动换行
java·pdf
嘻嘻仙人2 天前
【杂谈一之概率论】CDF、PDF、PMF和PPF概念解释与分析
pdf·概率论·pmf·cdf
资深前端之路2 天前
vue2 将页面生成pdf下载
前端·vue.js·pdf
Eiceblue2 天前
Python 复制PDF中的页面
vscode·python·pdf