Weasyprint的安装部署以及使用主要基于Weasyprint官网文档进行
首次发布时间:2025/2/23
WeasyPrint
简介:
WeasyPrint 是 Python 的 HTML/CSS 到 PDF 转换库,基于 Cairo 图形库开发,支持将 HTML 页面(含 CSS 样式)高质量渲染为 PDF,无需依赖浏览器环境
核心特点:
- CSS 全支持:完美兼容 CSS3,可精确控制页眉/页脚、水印、分页等复杂排版
- 多平台兼容:支持 Linux、macOS 和 Windows,但需安装系统依赖(如 GTK 库)
- 应用场景:适合生成电子发票、合同、电子书等需要高精度排版的场景
配置过程
相关资料
配置
在此说明,建议首次配置虚拟机中安装测试,避免污染主机环境。
环境
系统:windown 版本 Windows 10 专业工作站版版本号:22H2
- Python ≥ 3.9.0
- Pango ≥ 1.44.0
- pydyf ≥ 0.10.0
- CFFI ≥ 0.6
- tinyhtml5 ≥ 2.0.0b1
- tinycss2 ≥ 1.3.0
- cssselect2 ≥ 0.1
- Pyphen ≥ 0.9.1
- 枕头≥ 9.1.0
- 字体工具 ≥ 4.0.0
其中,除了 Pango,其他均在安装 weasyprint 时自带
配置安装
安装Pango以及其依赖项
- 安装 MSYS2 并保留默认选项。
- 安装后,在 MSYS2 的 shell 中,执行
pacman -S mingw-w64-x86_64-pango - 关闭 MSYS2 的 shell。
创建虚拟
python 的虚拟环境是一种隔离的运行环境,用于为不同项目提供独立的 python 解释器和依赖库管理空间,避免不同项目间的包版本冲突。
核心特点:
- 隔离性:每个虚拟环境拥有独立的 python 解释器、标准库和包目录,互不干扰。
- 依赖管理:通过
requirements.txt等文件记录项目依赖,确保环境可复现 - 工具支持:常见工具包括 python 内置的
venv、Anaconda 的conda
基本使用步骤
进入 cmd
- 创建环境
python -m venv venv创建一个名为 venv 的文件即虚拟环境
- 激活环境
- 进入 venv 目录
venv\Scripts\activate.bat进入虚拟环境
- 进入 venv 目录
- 安装依赖
- 安装依赖
pip install weasyprint pip freeze > re. txt导出依赖目录
- 安装依赖
- 退出环境
deactivate
验证 weasyprint 是否完善
在虚拟环境下输入
python -m weasyprint --info
安装完成以后就会显示版本信息

测试能否生成
在目录中创建.py文件,cmd中运行python <name>.py,如果顺利的话就会在当前目录下生成output.pdf文件
以下是测试代码
from weasyprint import HTML
# 从字符串生成 PDF
HTML(string='<h1>Hello World!</h1>').write_pdf('output.pdf')
使用
本人对其的使用还只存在于片面,对很多特性还不熟悉,先对我遇到的问题进行反馈。
1.根据url生成pdf
ps:下方是两个不带css样式和待css样式的代码文件
代码:目的是 HTML 方法读取 weasyprint地址得信息 通过 write_pdf 导入到 weasyprint-website.pdf
from weasyprint import HTML
HTML('https://weasyprint.org/').write_pdf('/tmp/weasyprint-website.pdf')
代码:带内联样式表
from weasyprint import HTML, CSS
HTML('https://weasyprint.org/').write_pdf('/tmp/weasyprint-website.pdf',
stylesheets=[CSS(string='body { font-family: serif !important }')])
可能遇到的问题
1. 文件路径
本模块主要围绕路径问题展开
问题描述:代码直接复制就用, 提示:FileNotFoundError: [Errno 2] No such file or directory: '/tmp/weasyprint-website.pdf' 指找不到文件或者目录
解决方法:修改成自己的文件输出路径,也可以将 /tmp/ 删除,表示在输出文件到当前文件目录下
问题描述:在将文件路径替换成自己的以后,提示:PermissionError: [Errno 13] Permission denied: 'E:\克隆项目\pythonProject\1.pdf'
解决方法:文件路径改成这样 E:/克隆项目/pythonProject/1.pdf
2. 编译器问题
本模块主要是围绕在 Pycharm 上出现的问题
问题描述:在 cmd 中运行 python main.py (main. py 是我创建的 weasyprint 的 py 文件),运行正常,但在 pycharm 中,提示:weasyprint.urls.URLFetchingError: URLError: <urlopen error [Errno 11001] getaddrinfo failed> 指无法解析 url 或访问指定 url
解决方法:将协议头 https 改成 http 运行一遍,改会 https 也成功了