什么是pdfkit?
pdfkit是一个Python库,它封装了wkhtmltopdf工具,允许开发者轻松地将HTML内容转换为PDF格式。这个库特别适合需要动态生成报告、发票、文档等场景。
简单易用
只需几行代码即可将HTML转换为PDF,无需复杂的设置。
高质量输出
生成高质量的PDF文件,保留原始HTML的布局和样式。
支持CSS和JavaScript
完全支持CSS样式和JavaScript,可以生成动态内容。
高度可定制
提供多种选项来自定义PDF输出,如页面大小、边距、页眉页脚等。
安装pdfkit
在开始使用pdfkit之前,需要安装两个组件:pdfkit Python包和wkhtmltopdf命令行工具。
安装pdfkit Python包
使用pip安装pdfkit:
pip install pdfkit
安装wkhtmltopdf
pdfkit依赖于wkhtmltopdf工具,需要单独安装:
Windows
从 wkhtmltopdf官网 下载安装包并安装
Ubuntu/Debian
sudo apt-get install wkhtmltopdf
macOS
brew install homebrew/cask/wkhtmltopdf
基本使用方法
以下是pdfkit的三种基本使用方式:从URL、文件和字符串生成PDF。
从URL生成PDF
将网页转换为PDF文件:
import pdfkit # 将网页转换为PDF pdfkit.from_url('http://example.com', 'output.pdf')
从HTML文件生成PDF
将本地的HTML文件转换为PDF:
import pdfkit # 将HTML文件转换为PDF pdfkit.from_file('input.html', 'output.pdf')
从HTML字符串生成PDF
直接使用HTML字符串生成PDF:
import pdfkit html = '''<html> <body> <h1>PDF生成示例</h1> <p>这是一个使用pdfkit生成的PDF文档</p> </body> </html>''' # 将HTML字符串转换为PDF pdfkit.from_string(html, 'output.pdf')
高级配置选项
pdfkit提供了多种选项来自定义PDF输出:
options = { 'page-size': 'A4', 'margin-top': '15mm', 'margin-right': '15mm', 'margin-bottom': '15mm', 'margin-left': '15mm', 'encoding': "UTF-8", 'no-outline': None, 'header-center': '报表标题', 'footer-center': '第 [page] 页 / 共 [topage] 页' } # 使用配置生成PDF pdfkit.from_url('http://example.com', 'output.pdf', options=options)
常用配置选项
页面尺寸
'page-size': 'Letter'
可选值:A0-A10, B0-B10, Letter, Legal等
页边距
'margin-top': '10mm'
设置上、下、左、右边距
方向
'orientation': 'Landscape'
Portrait(纵向)或Landscape(横向)
页眉页脚
'header-center': '标题'
支持动态内容如[page], [date]等
常见问题与解决方案
找不到wkhtmltopdf
如果系统找不到wkhtmltopdf,可以在代码中指定路径:
import pdfkit # 配置wkhtmltopdf路径 config = pdfkit.configuration(wkhtmltopdf='/path/to/wkhtmltopdf') pdfkit.from_string(html, 'output.pdf', configuration=config)
中文显示问题
确保HTML中正确设置了中文字体和编码:
<meta charset="UTF-8"> <style> body { font-family: 'SimSun', '宋体', serif; } </style>
CSS样式未生效
使用绝对路径引用CSS文件,或在HTML中直接嵌入样式:
<link rel="stylesheet" href="/absolute/path/to/style.css"> <!-- 或者 --> <style> /* 直接嵌入CSS */ body { font-size: 12pt; } </style>
总结
pdfkit是一个功能强大且易于使用的Python库,用于将HTML内容转换为PDF格式。通过本教程,您已经学习了:
- 如何安装pdfkit和wkhtmltopdf
- 三种基本的PDF生成方法
- 常用的配置选项和高级功能
- 常见问题的解决方案
pdfkit特别适合需要自动化生成报告、发票、文档等的应用场景。结合Python的HTML生成库(如Jinja2),您可以轻松创建动态的、专业级的PDF文档。
发表评论