Python|干货!10分钟,用Python生成图文并茂的PDF报告!

Python|干货!10分钟,用Python生成图文并茂的PDF报告!

文章图片




reportlab是Python的一个标准库 , 可以画图、画表格、编辑文字 , 最后可以输出PDF格式 。 它的逻辑和编辑一个word文档或者PPT很像 。 有两种方法:
1)建立一个空白文档 , 然后在上面写文字、画图等;
2)建立一个空白list , 以填充表格的形式插入各种文本框、图片等 , 最后生成PDF文档 。
因为需要产生一份给用户看的报告 , 里面需要插入图片、表格等 , 所以采用的是第二种方法 。
安装第三方库reportlab输入Python的第三方库 , 使用前需要先安装:pip install reportlab
模块导入提前导入相关内容 , 并且注册字体 。 (注册字体前需要先准备好字体文件)
from reportlab.pdfbase import pdfmetrics   # 注册字体
from reportlab.pdfbase.ttfonts import TTFont # 字体类
from reportlab.platypus import Table SimpleDocTemplate Paragraph Image  # 报告内容相关类
from reportlab.lib.pagesizes import letter  # 页面的标志尺寸(8.5*inch 11*inch)
from reportlab.lib.styles import getSampleStyleSheet  # 文本样式
from reportlab.lib import colors  # 颜色模块
from reportlab.graphics.charts.barcharts import VerticalBarChart  # 图表类
from reportlab.graphics.charts.legends import Legend  # 图例类
from reportlab.graphics.shapes import Drawing  # 绘图工具
from reportlab.lib.units import cm  # 单位:cm

# 注册字体(提前准备好字体文件 如果同一个文件需要多种字体可以注册多个)
pdfmetrics.registerFont(TTFont('SimSun' 'SimSun.ttf'))

封装不同内容对应的函数创建一个Graphs类 , 通过不同的静态方法提供不同的报告内容 , 包括:标题、普通段落、图片、表格和图表 。 函数中的相关数据目前绝大多数都是固定值 , 可以根据情况自行设置成相关参数 。
class Graphs:
    # 绘制标题
@staticmethod
    def draw_title(title: str):
        # 获取所有样式表
        style = getSampleStyleSheet()
        # 拿到标题样式
        ct = style['Heading1'

        # 单独设置样式相关属性
        ct.fontName = 'SimSun'      # 字体名
        ct.fontSize = 18            # 字体大小