什么是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':