PDFKit Python库:从HTML生成PDF文件

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是PDFKit for Python

PDFKit 是一个强大的Python库,作为wkhtmltopdf工具的封装层,利用WebKit引擎将HTML文档转换为PDF文件。该库允许开发者创建专业的PDF文档,完美保留复杂布局、现代CSS样式、内嵌字体、SVG图形甚至JavaScript效果。

PDFKit的核心优势在于,它让开发者能够使用熟悉的Web技术(HTML、CSS)创建文档,然后以高质量渲染效果转换为PDF。这使得它成为生成报表、发票、票据、证书及其他动态内容文档的理想工具。

PDFKit库的功能特性

支持的技术标准

  • 现代HTML5和CSS3
  • Bootstrap、Tailwind CSS等CSS框架
  • SVG图形和Web字体
  • 复杂格式的表格
  • Flexbox和Grid布局
  • CSS媒体查询
  • 基础JavaScript支持

支持的数据来源

PDFKit支持从三种主要来源进行转换:

  • 网页URL地址
  • 本地HTML文件
  • 内存中的HTML字符串

安装与配置

安装Python库

pip install pdfkit

安装wkhtmltopdf

Ubuntu/Debian系统:

sudo apt update
sudo apt install wkhtmltopdf

macOS(通过Homebrew):

brew install --cask wkhtmltopdf

Windows系统: 从官方网站 https://wkhtmltopdf.org/downloads.html 下载安装程序。提供Windows Vista及以上版本的32位和64位安装包。

CentOS/RHEL/Amazon Linux系统:

# CentOS 7
sudo yum install wkhtmltopdf

# 较新版本
sudo dnf install wkhtmltopdf

验证安装

安装完成后,确认wkhtmltopdf在系统中可用:

wkhtmltopdf --version

如果命令未找到,需要在Python代码中手动配置可执行文件路径。

核心方法与函数

从不同来源创建PDF

import pdfkit

# 从URL生成
pdfkit.from_url("https://example.com", "output.pdf")

# 从HTML文件生成
pdfkit.from_file("template.html", "output.pdf")

# 从HTML字符串生成
html_content = "<h1>标题</h1><p>文档内容</p>"
pdfkit.from_string(html_content, "output.pdf")

配置wkhtmltopdf路径

如果wkhtmltopdf不在系统PATH环境变量中,可以手动指定路径:

config = pdfkit.configuration(wkhtmltopdf='/usr/local/bin/wkhtmltopdf')
pdfkit.from_string(html_content, "output.pdf", configuration=config)

在内存中生成PDF

在Web应用和API中,通常需要以字节形式获取PDF:

# 返回PDF字节数据
pdf_bytes = pdfkit.from_string(html_content, False)

# 可通过HTTP响应发送
from flask import Response
return Response(pdf_bytes, mimetype='application/pdf')

生成参数配置

基本格式选项

options = {
    'page-size': 'A4',
    'margin-top': '0.75in',
    'margin-right': '0.75in',
    'margin-bottom': '0.75in',
    'margin-left': '0.75in',
    'encoding': "UTF-8",
    'no-outline':                    

推荐