在数据报告、发票生成、证书制作等应用中,自动生成 PDF 是常见需求。本文将带你用 Python 的 reportlab 库生成专业的 PDF 报表,支持文字排版、表格、图表,并解决中文乱码问题。
一、安装 ReportLab
pip install reportlab
安装成功后可直接使用 reportlab.pdfgen 和 reportlab.platypus 模块。
二、创建第一个 PDF 文件
from reportlab.pdfgen import canvas
c = canvas.Canvas("demo.pdf")
c.drawString(100, 750, "Hello, PDF!")
c.save()
生成后的 PDF 文件位于当前目录,文字位于页面左下角 (100, 750) 坐标。
三、设置字体与样式(含中文支持)
ReportLab 默认不支持中文,我们需要手动注册中文字体。
步骤 1:下载字体(如 SimSun.ttf 或微软雅黑)
步骤 2:注册中文字体
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
pdfmetrics.registerFont(TTFont('SimSun', 'SimSun.ttf'))
步骤 3:使用中文字体绘制文字
c = canvas.Canvas("chinese.pdf")
c.setFont("SimSun", 14)
c.drawString(100, 750, "你好,PDF 世界!")
c.save()
四、使用 Platypus 创建结构化报告
Platypus 是 reportlab 高级布局引擎,支持段落、表格、图像、分页等。
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer
from reportlab.lib.styles import getSampleStyleSheet
doc = SimpleDocTemplate("report.pdf")
styles = getSampleStyleSheet()
story = []
story.append(Paragraph("Python 自动生成 PDF 报告示例", styles["Title"]))
story.append(Spacer(, ))
story.append(Paragraph(, styles[]))
doc.build(story)

