Weasyprint的安装部署以及使用主要基于Weasyprint官网文档进行

首次发布时间:2025/2/23

WeasyPrint


简介:

WeasyPrint 是 Python 的 HTML/CSS 到 PDF 转换库,基于 Cairo 图形库开发,支持将 HTML 页面(含 CSS 样式)高质量渲染为 PDF,无需依赖浏览器环境

核心特点:

  • CSS 全支持:完美兼容 CSS3,可精确控制页眉/页脚、水印、分页等复杂排版
  • 多平台兼容:支持 Linux、macOS 和 Windows,但需安装系统依赖(如 GTK 库)
  • 应用场景:适合生成电子发票、合同、电子书等需要高精度排版的场景

配置过程

相关资料

WeasyPrint 64.0 文档

配置

在此说明,建议首次配置虚拟机中安装测试,避免污染主机环境。

环境

系统:windown 版本 Windows 10 专业工作站版版本号:22H2


配置安装

安装Pango以及其依赖项
  • 安装 MSYS2 并保留默认选项。
  • 安装后,在 MSYS2 的 shell 中,执行 pacman -S mingw-w64-x86_64-pango
  • 关闭 MSYS2 的 shell。
创建虚拟

python 的虚拟环境是一种隔离的运行环境,用于为不同项目提供独立的 python 解释器和依赖库管理空间,避免不同项目间的包版本冲突。

核心特点:

  • 隔离性:每个虚拟环境拥有独立的 python 解释器、标准库和包目录,互不干扰。
  • 依赖管理:通过 requirements.txt 等文件记录项目依赖,确保环境可复现
  • 工具支持:常见工具包括 python 内置的 venv、Anaconda 的 conda

基本使用步骤

进入 cmd

  1. 创建环境
    1. python -m venv venv 创建一个名为 venv 的文件即虚拟环境
  2. 激活环境
    1. 进入 venv 目录 venv\Scripts\activate.bat 进入虚拟环境
  3. 安装依赖
    1. 安装依赖 pip install weasyprint
    2. pip freeze > re. txt 导出依赖目录
  4. 退出环境
    1. deactivate
验证 weasyprint 是否完善

在虚拟环境下输入

python -m weasyprint --info

安装完成以后就会显示版本信息

An image to describe post

测试能否生成

在目录中创建.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 也成功了