当前位置:首页 > Python > 正文

Python pdfkit库使用教程 - 将HTML转换为PDF的完整指南 | Python PDF生成

📄

Python pdfkit库使用教程

完整指南:使用pdfkit将HTML转换为专业PDF文档

什么是pdfkit?

pdfkit是一个Python库,它封装了wkhtmltopdf工具,允许开发者轻松地将HTML内容转换为PDF格式。这个库特别适合需要动态生成报告、发票、文档等场景。

简单易用

只需几行代码即可将HTML转换为PDF,无需复杂的设置。

高质量输出

生成高质量的PDF文件,保留原始HTML的布局和样式。

支持CSS和JavaScript

完全支持CSS样式和JavaScript,可以生成动态内容。

高度可定制

提供多种选项来自定义PDF输出,如页面大小、边距、页眉页脚等。

安装pdfkit

在开始使用pdfkit之前,需要安装两个组件:pdfkit Python包和wkhtmltopdf命令行工具。

1

安装pdfkit Python包

使用pip安装pdfkit:

命令行
pip install pdfkit
2

安装wkhtmltopdf

pdfkit依赖于wkhtmltopdf工具,需要单独安装:

Windows

wkhtmltopdf官网 下载安装包并安装

Ubuntu/Debian

命令行
sudo apt-get install wkhtmltopdf

macOS

命令行
brew install homebrew/cask/wkhtmltopdf
注意: 安装完成后,确保wkhtmltopdf可执行文件在系统PATH中,或者在代码中指定其路径。

基本使用方法

以下是pdfkit的三种基本使用方式:从URL、文件和字符串生成PDF。

1

从URL生成PDF

将网页转换为PDF文件:

Python 代码示例
import pdfkit

# 将网页转换为PDF
pdfkit.from_url('http://example.com', 'output.pdf')
2

从HTML文件生成PDF

将本地的HTML文件转换为PDF:

Python 代码示例
import pdfkit

# 将HTML文件转换为PDF
pdfkit.from_file('input.html', 'output.pdf')
3

从HTML字符串生成PDF

直接使用HTML字符串生成PDF:

Python 代码示例
import pdfkit

html = '''<html>
  <body>
    <h1>PDF生成示例</h1>
    <p>这是一个使用pdfkit生成的PDF文档</p>
  </body>
</html>'''

# 将HTML字符串转换为PDF
pdfkit.from_string(html, 'output.pdf')

高级配置选项

pdfkit提供了多种选项来自定义PDF输出:

Python 配置示例
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]等

常见问题与解决方案

1

找不到wkhtmltopdf

如果系统找不到wkhtmltopdf,可以在代码中指定路径:

Python 解决方案
import pdfkit

# 配置wkhtmltopdf路径
config = pdfkit.configuration(wkhtmltopdf='/path/to/wkhtmltopdf')

pdfkit.from_string(html, 'output.pdf', configuration=config)
2

中文显示问题

确保HTML中正确设置了中文字体和编码:

HTML 示例
<meta charset="UTF-8">
<style>
  body {
    font-family: 'SimSun', '宋体', serif;
  }
</style>
3

CSS样式未生效

使用绝对路径引用CSS文件,或在HTML中直接嵌入样式:

HTML 解决方案
<link rel="stylesheet" href="/absolute/path/to/style.css">

<!-- 或者 -->

<style>
  /* 直接嵌入CSS */
  body { font-size: 12pt; }
</style>
提示: 如果遇到复杂布局问题,尝试简化HTML结构或使用更基础的CSS属性。wkhtmltopdf对某些现代CSS特性支持有限。

总结

pdfkit是一个功能强大且易于使用的Python库,用于将HTML内容转换为PDF格式。通过本教程,您已经学习了:

  • 如何安装pdfkit和wkhtmltopdf
  • 三种基本的PDF生成方法
  • 常用的配置选项和高级功能
  • 常见问题的解决方案

pdfkit特别适合需要自动化生成报告、发票、文档等的应用场景。结合Python的HTML生成库(如Jinja2),您可以轻松创建动态的、专业级的PDF文档。

最佳实践: 对于复杂的报告生成,建议先使用HTML和CSS创建模板,然后使用pdfkit转换为PDF。这样可以利用现代Web技术实现复杂的布局和样式。

Python pdfkit库使用教程 © 2023 | 将HTML转换为PDF的完整指南

发表评论