上一篇
如何使用Python生成PDF?- Python PDF生成详细教程
- Python
- 2025-08-02
- 1888
如何使用Python生成PDF?完整教程与代码示例
本文将详细介绍使用Python生成PDF文件的多种方法,包含实际代码示例,帮助开发者快速掌握PDF生成技术。
一、Python生成PDF的常用库
1. ReportLab - 功能最全面的PDF生成库
2. FPDF - 简单轻量的PDF生成工具
3. PyPDF2 - PDF文件操作与合并
4. WeasyPrint - HTML转PDF工具
二、使用ReportLab生成PDF
安装ReportLab
pip install reportlab
基础PDF生成示例
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
def create_pdf():
filename = "reportlab_example.pdf"
c = canvas.Canvas(filename, pagesize=letter)
# 设置字体和大小
c.setFont("Helvetica", 12)
# 添加文本
c.drawString(100, 700, "Python生成的PDF文档")
c.drawString(100, 680, "使用ReportLab库创建")
# 添加图形
c.rect(50, 650, 500, 1, fill=1)
# 添加图片
c.drawImage("logo.png", 100, 600, width=100, height=50)
# 保存PDF
c.save()
print(f"PDF已生成: {filename}")
create_pdf()
三、使用FPDF生成PDF
安装FPDF
pip install fpdf
创建简单PDF文档
from fpdf import FPDF
def generate_pdf():
pdf = FPDF()
pdf.add_page()
# 添加字体(支持中文)
pdf.add_font('SimSun', '', 'simsun.ttc', uni=True)
pdf.set_font('SimSun', size=12)
# 添加单元格
pdf.cell(200, 10, txt="Python FPDF教程", ln=True, align='C')
# 添加多行文本
pdf.multi_cell(0, 10, "这是一个使用FPDF库生成的PDF文档示例。" +
"支持自动换行和基本格式设置。")
# 保存文件
pdf.output("fpdf_example.pdf")
print("PDF文件生成成功")
generate_pdf()
四、使用PyPDF2操作PDF
合并PDF文件示例
from PyPDF2 import PdfMerger
def merge_pdfs():
merger = PdfMerger()
# 添加要合并的文件
merger.append("file1.pdf")
merger.append("file2.pdf")
merger.append("file3.pdf")
# 输出合并结果
merger.write("merged_document.pdf")
merger.close()
print("PDF合并完成")
merge_pdfs()
五、最佳实践与常见问题
- 中文显示问题:使用支持中文的字体文件(.ttc/.ttf)
- 复杂布局:推荐使用ReportLab的Platypus框架
- HTML转PDF:使用WeasyPrint或pdfkit库
- 性能优化:批量处理时复用canvas对象
- 加密保护:使用pdf.set_encryption()添加密码
六、完整项目示例:生成数据报告
from reportlab.lib import colors
from reportlab.lib.pagesizes import A4
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle
import pandas as pd
def generate_report():
# 创建PDF文档
doc = SimpleDocTemplate("data_report.pdf", pagesize=A4)
# 示例数据
data = [['产品', '销量', '增长率'],
['手机', 1200, '15%'],
['笔记本', 800, '22%'],
['平板', 450, '8%']]
# 创建表格
table = Table(data)
table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.grey),
('TEXTCOLOR', (0,0), (-1,0), colors.whitesmoke),
('ALIGN', (0,0), (-1,-1), 'CENTER'),
('FONTSIZE', (0,0), (-1,0), 14),
('BOTTOMPADDING', (0,0), (-1,0), 12),
('BACKGROUND', (0,1), (-1,-1), colors.beige),
('GRID', (0,0), (-1,-1), 1, colors.black)
]))
# 构建文档
doc.build([table])
print("数据报告生成完成")
generate_report()
总结
Python提供了多种生成PDF的解决方案:
1. 需要高级功能选择ReportLab
2. 简单需求使用FPDF
3. PDF操作使用PyPDF2
4. HTML转换使用WeasyPrint
根据具体需求选择合适的工具,可高效生成专业PDF文档。
本文由ShuYue于2025-08-02发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://521pj.cn/20257075.html
发表评论