使用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项目的一个强大组成部分。

相关推荐
AirDroid_cn15 小时前
PDF转图片需要用到什么技术?苹果手机怎样将PDF转为jpg?
pdf·iphone·ipad·快捷指令
拓端研究室1 天前
专题:2025全球消费趋势与中国市场洞察报告|附300+份报告PDF、原数据表汇总下载
大数据·信息可视化·pdf
Kyln.Wu2 天前
【python实用小脚本-190】Python一键删除PDF任意页:输入页码秒出干净文件——再也不用在线裁剪排队
服务器·python·pdf
阿幸软件杂货间3 天前
免费万能电子书格式转换器!Neat Converter支持 ePub、Azw3、Mobi、Doc、PDF、TXT 文件的相互转换。
pdf·格式转换
星马梦缘3 天前
CSDN转PDF【无水印且免费!!!】
pdf·免费·pandoc·转pdf·无水印·csdn转pdf·wkhtmlpdf
画月的亮3 天前
前端处理导出PDF。Vue导出pdf
前端·vue.js·pdf
伊织code4 天前
pdfminer.six
python·pdf·图片·提取·文本·pdfminer·pdfminer.six
HAPPY酷4 天前
给纯小白的Python操作 PDF 笔记
开发语言·python·pdf
代码AI弗森5 天前
PDF OCR + 大模型:让文档理解不止停留在识字
pdf·ocr
小周同学:6 天前
在 Vue2 中使用 pdf.js + pdf-lib 实现 PDF 预览、手写签名、文字批注与高保真导出
开发语言·前端·javascript·vue.js·pdf