Python脚本PDF生成有哪些库可用

wen 实用脚本 1

本文目录导读:

Python脚本PDF生成有哪些库可用

  1. ReportLab(最强大、专业级)
  2. WeasyPrint(HTML 转 PDF 最佳)
  3. FPDF2(轻量、跨平台)
  4. Matplotlib + PdfPages(数据可视化)
  5. jinja2 + ReportLab(模版化方案)
  6. 其他值得关注的库
  7. 推荐选择指南
  8. 注意事项

Python 中可用于生成 PDF 的库非常丰富,主要可以分为基础绘制类HTML/模板类报告类专业图形类,以下是最常用、最值得推荐的几个库,按推荐度和适用场景排序:

ReportLab(最强大、专业级)

用途:从零开始绘制 PDF,支持最复杂的排版和图形。

  • 特点
    • 支持画布(canvas)和文档模板(platypus)
    • 支持表格、图表、段落、页眉页脚、水印
    • 可嵌入字体、图片、矢量图形
    • 支持高度自定义,性能优异
  • 适用场景:需要精确控制每个元素位置、生成复杂报表、发票、证书等
  • 示例
    from reportlab.pdfgen import canvas
    c = canvas.Canvas("hello.pdf")
    c.drawString(100, 750, "Hello World")
    c.save()

WeasyPrint(HTML 转 PDF 最佳)

用途:将 HTML/CSS 渲染为 PDF,支持现代 CSS 特性。

  • 特点
    • 完美支持 CSS3、Flexbox、Grid、@page 规则
    • 自动处理分页、页码
    • 支持从 URL 或文件读取 HTML
    • 输出质量极高
  • 适用场景:已有 HTML 模板、需要精确排版又想避免从零绘制
  • 示例
    from weasyprint import HTML
    HTML(string='<h1>Hello</h1><p>World</p>').write_pdf('output.pdf')

FPDF2(轻量、跨平台)

用途:简单 PDF 生成,API 类似 PHP 的 FPDF。

  • 特点
    • 无外部依赖,安装简单
    • 支持 Unicode(通过 TTF 字体)
    • 内置表格、单元格、多重文本等功能
    • 代码风格直白易懂
  • 适用场景:快速生成简单文档、报表、发票
  • 示例
    from fpdf import FPDF
    pdf = FPDF()
    pdf.add_page()
    pdf.set_font("Arial", size=12)
    pdf.cell(200, 10, text="Hello World", align="C")
    pdf.output("simple.pdf")

Matplotlib + PdfPages(数据可视化)

用途:将图表和数据可视化结果导出为 PDF。

  • 特点
    • 完美支持 Matplotlib 所有图表
    • 支持多页 PDF、矢量图
    • 可嵌入报告框架中
  • 适用场景:数据分析报告、科学论文图表
  • 示例
    import matplotlib.pyplot as plt
    from matplotlib.backends.backend_pdf import PdfPages

with PdfPages('charts.pdf') as pdf: plt.plot([1,2,3], [4,5,6]) pdf.savefig() plt.close()


## 5. pdfkit(wkhtmltopdf 封装)
**用途**:HTML 转 PDF(基于 WebKit 引擎)。
- **特点**:
  - 支持复杂的 HTML+CSS+JS 渲染
  - 可设置页面大小、边距、页眉页脚
  - 需安装 wkhtmltopdf 二进制文件
- **适用场景**:需要渲染包含 JavaScript 的网页
- **示例**:
```python
import pdfkit
pdfkit.from_string('<h1>Hello</h1>', 'out.pdf')

jinja2 + ReportLab(模版化方案)

用途:动态生成复杂报告的最佳组合。

  • 思路:用 Jinja2 定义数据模板 → 填充数据 → ReportLab 渲染
  • 优势:数据与样式分离,适合批量生成

其他值得关注的库

库名 特点 适用场景
PyPDF2 / pypdf 主要读取、合并、拆分 PDF 操作已有PDF
pdfminer.six PDF 内容提取(文本、表格) 数据抽取
cairo / pycairo 底层矢量图形库 高性能图形
rst2pdf reStructuredText 转 PDF 文档生成
pdfplumber 提取表格、文本 PDF 数据解析

推荐选择指南

你的需求 推荐库
从零绘制复杂PDF(专业级) ReportLab
用HTML做精美排版 WeasyPrint
快速生成简单文档 FPDF2
数据可视化报告 Matplotlib
操作已有PDF(合并/拆分) pypdf
批量生成模板化报告 Jinja2 + ReportLab

注意事项

  1. 中文支持:ReportLab 和 FPDF2 需要加载中文字体文件(如 simhei.ttf),WeasyPrint 通常自动处理
  2. 性能:复杂文档优先 ReportLab,大量小文档优先 FPDF2
  3. 安装依赖:WeasyPrint 在 macOS/Linux 可能需要系统字体库,Windows 一般直接可用

对于大多数 Web 开发场景,WeasyPrintReportLab 是最实用的两个选择:前者适合基于 HTML 模板快速出稿,后者适合需要高度定制的商业报告。

抱歉,评论功能暂时关闭!