基于Python包生成PDF文件之Reportlab的Platypus生成表格和图片的方法
1.reporlab的用途:
可以帮助你把处理好的数据,及用于展示的图都放在一个PDF文件中,方便别人查看,且不易修改。
2.安装:
1> 在Windows系统环境中,Win+R打开命令行,输入cmd进入dos操作环境
C:\users\Administrator>pip install reportlab
2>在pycharm的中,输入pip install reportlab,安装report第三方库
3.Platypus介绍
Platypus是“Page Layout and Typography Using Scripts”,是使用脚本的页面布局和印刷术的缩写,这是一个高层次页面布局库,它可以让你通过编程创造复杂的文档,并且毫不费力。
4.Platypus的基本用法:
from reportlab.platypus import SimpleDocTemplate, Paragraph from reportlab.lib.styles import getSampleStyleSheet # 调用模板,创建指定名称的PDF文档 doc = SimpleDocTemplate("Hello.pdf") # 获得模板表格 styles = getSampleStyleSheet() # 指定模板 style = styles['Normal'] # 初始化内容 story =[] # 将段落添加到内容中 story.append(Paragraph("This is your first Document!",style)) # 将内容输出到PDF中 doc.build(story)
5.Platypus的设置中文字体的方法(本文拿SimHei字体做介绍):
Platypus包括reportlab是默认不支持中文字体的,需要下载中文字体包,解压并放在指定路径下才可以使用。
1> 字体的下载及存放路径:
首先,在百度上搜索你所需要的中文字体的包,并下载下来,本文使用:https://www.zitijia.com/i/281258939050380345.html
其次将下载的字体文件包节解压,将.ttf文件放到你的python 3.0以上解释器的Lib\site-packages\reportlab\fonts文件夹就可以使用了。
2> 中文字体的使用方法:
from reportlab.platypus import SimpleDocTemplate,Paragraph from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont
pdfmetrics.registerFont(TTFont('SimHei', 'SimHei.ttf')) #注册字体
styles = getSampleStyleSheet() # 指定模板 style = styles['Normal']
style.fontName =’SimHei’
Style.fontSize = 20
#需要把要显示的内容块加载到story中
story = []
story.apeed(Paragraph('你好,<b>Python</b>',style))
#生成pdf文件
doc = SimpleDocTemplate(‘hello.pdf’)
#要内容块加载PDF文件中
doc.build(story)
6.Platypus生成表格的PDF,并把表头设置中文字体
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
pdfmetrics.registerFont(TTFont('SimHei', 'SimHei.ttf')) #注册字体
doc = SimpleDocTemplate("table_Chinesefont.pdf") styles = getSampleStyleSheet() style = styles['Normal'] story =[] data= [ ['第一列', '第二列', '第三列', '第四列', '第五列'], ['00', '01', '02', '03', '04'], ['10', '11', '12', '13', '14'], ['20', '21', '22', '23', '24'], ['30', '31', '32', '33', '34']] t=Table(data)
#下面的(0,0),(1,1) 表示为(起始行索引,起始列索引),(结束行索引,结束列索引) t.setStyle(TableStyle( [('GRID', (0,0), (-1,-1), 0.25, colors.black), ('BOX', (0, 0), (-1, -1), 0.25, colors.red), ('FONT', (0, 0), (-1, -1), 'SimHei')] )) story.append(t) doc.build(story)
7.Platypus生成图片的PDF
from reportlab.platypus import SimpleDocTemplate,Image
from reportlab.lib.styles import getSampleStyleSheet
doc = SimpleDocTemplate("Hello.pdf")
styles = getSampleStyleSheet()
style = styles['Normal']
story =[]
#Image里面写图片的路径
#图片的大小及长宽最好不要超过500*500px,太大了会显示不出来
#写路径时前面最好加r"c:\XXXX"
t1 = Image(r"C:\Users\admin\Desktop\picture1.png")
t2 = Image("C:\Users\admin\Desktop\picture2.png")
story.append(t1)
story.append(t2)
doc.built()
最后呢,今天是我心血来潮,也是第一次写文章,希望能对需要的同伴有所帮助,也希望多点关注,也会继续更新的,在这里与在看的朋友一起进步,共同成长,共勉!!