基于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()
 

 

最后呢,今天是我心血来潮,也是第一次写文章,希望能对需要的同伴有所帮助,也希望多点关注,也会继续更新的,在这里与在看的朋友一起进步,共同成长,共勉!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

posted @ 2021-08-19 00:59  河海星辰  阅读(1129)  评论(0编辑  收藏  举报