首页 前端知识 【Python】用weasyprint实现将html文件转成pdf文件

【Python】用weasyprint实现将html文件转成pdf文件

2024-05-26 00:05:21 前端知识 前端哥 606 877 我要收藏

最近在工作中经常遇到html文件无法在手机端、pad上无法查看的苦恼,但又不想装一些乱七八糟的app,所以想到把html文件保存成pdf文件,以方便随时随地方便的查看文件。

大概查了一下,最简单易用的方法就是使用浏览器内置功能

大部分现代浏览器如Google Chrome、Firefox等提供了打印预览功能,可以将网页内容以PDF形式保存:

  1. 打开HTML文件所在网址或直接在浏览器中打开本地HTML文件。
  2. 按 Ctrl + P (Windows/Linux) 或 Cmd + P (Mac),调出打印对话框;
  3. 在打印机列表中选择打印机为 “Microsoft Print to PDF” ;
  4. 调整打印设置(如页面范围、布局等);
  5. 点击“保存”按钮,将HTML内容保存为PDF文件。

但是,用浏览器的打印功能需要每次都去操作打印界面,如果由大量的文件需要转换时,效率就比较低了,所以这里介绍以下用Python实现上述功能的方法,那就是使用 weasyprint 模块。

一. WeasyPrint 

WeasyPrint 是一个开源的 Python 库,主要用于将 HTML 内容及其相关的 CSS 样式转换成 PDF 文档。它可以准确地将结构化的 HTML 页面布局渲染成适合打印的标准格式的 PDF 文件,非常适合用于报表生成、电子书制作、票据打印等各种需要从Web内容生成高质量PDF文档的应用场景。

WeasyPrint 支持大部分现代 HTML5 和 CSS3 规范,尤其是 CSS Paged Media Module,使得用户可以通过 CSS 控制页面布局、分页、页眉、页脚、页码等高级排版特性。此外,它还支持 SVG 图形和其他图像格式的嵌入。

使用 WeasyPrint 的典型流程是导入库,然后传入一个 HTML 文档(可以是本地文件、字符串或者是 URL),最后调用 write_pdf 方法生成 PDF 文件。它的设计目标之一是提供一个可靠的离线渲染工具,无需依赖浏览器环境或其他外部服务,可以在命令行下运行,也可以集成到各种Python应用中,包括 Django、Flask 等Web框架中。

二. 代码实现案例

这里提供一个使用 WeasyPrint 将html文件转换为 PDF 文件的代码:我在桌面上放了一个名为input.html的HTML文件,然后调用写好的方法将其转换成名为 output.pdf的PDF文件:

(有需要的小伙伴在具体使用时需要将代码中的路径及文件名称做相应修改哦)

# 导包
from weasyprint import HTML
# 定义文件转换方法
def convert_html_to_pdf(input_html, output_pdf):
    # 定义HTML文件路径和输出PDF文件路径
    html_file = input_html
    pdf_file = output_pdf

    # 使用WeasyPrint加载HTML文件
    html = HTML(filename=html_file)

    # 将HTML渲染并保存为PDF文件
    html.write_pdf(pdf_file)

# 调用方法
convert_html_to_pdf(r'C:\Users\16676\Desktop\input.html', r'C:\Users\16676\Desktop\output.pdf')

实现的效果如下,上面时原始html文件打开后的样式,下面是转换为pdf文件后的样式:

 

转载请注明出处或者链接地址:https://www.qianduange.cn//article/9480.html
标签
评论
会员中心 联系我 留言建议 回顶部
复制成功!