reportlab-创建pdf文件
2020-07-01 本文已影响0人
非鱼2018
1.快速创建pdf
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import Paragraph, SimpleDocTemplate
pdf = SimpleDocTemplate('001.pdf')
style = getSampleStyleSheet()
mystyle = style['Normal'] #默认样式,可以使用style.lsit()查看所有默认样式
contents = []
t1 = Paragraph('hello reportlab!', style=mystyle)
contents.append(t1)
pdf.build(contents) #生成pdf
2.支持中文
# copy中文字体C:\Windows\Fonts到python对应目录C:\ProgramData\Anaconda3\Lib\site-packages\reportlab\fonts
# simfang.ttf
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase import pdfmetrics
from reportlab.lib.styles import ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
pdfmetrics.registerFont(TTFont('fs', 'simfang.ttf')) #注册字体
mystyle = ParagraphStyle(name="user_style", fontName="fs",alignment=TA_LEFT,)
pdf = SimpleDocTemplate('002.pdf')
contents = []
t1 = Paragraph('你好 reportlab!', style=mystyle)
contents.append(t1)
pdf.build(contents)
3.生成多行中文
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase import pdfmetrics
from reportlab.lib.styles import ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
str1="""目击众神死亡的草原上野花一片
远在远方的风比远方更远
我的琴声呜咽 泪水全无
我把这远方的远归还草原
一个叫木头 一个叫马尾
我的琴声呜咽 泪水全无
"""
pdfmetrics.registerFont(TTFont('fs', 'simfang.ttf')) #注册字体
mystyle = ParagraphStyle(name="user_style", fontName="fs",alignment=TA_LEFT,)
pdf = SimpleDocTemplate('005.pdf')
contents = []
for i in str1.split('\n'):
contents.append(Paragraph(i, style=mystyle))
pdf.build(contents)
4.表格
from reportlab.lib.units import inch
from reportlab.lib import colors
table_style = [
('FONTNAME', (0, 0), (-1, -1), 'fs'), # 字体
('ALIGN', (0, 0), (-1, -1), 'CENTER'), # 对齐
('VALIGN', (-1, 0), (-2, 0), 'MIDDLE'), # 对齐
#('BACKGROUND', (0, 0), (-1, 0), colors.black),
('GRID', (0, 0), (-1, -1), 0.5, colors.grey), # 设置表格框线为grey色,线宽为0.5
]
table = Table([['第一行第一列','第二列'],[123,456]], colWidths=50, style=table_style)
pdf = SimpleDocTemplate('008.pdf')
contents = []
contents.append(table)
pdf.build(contents)
5.带样式的段落
from reportlab.platypus import Paragraph, SimpleDocTemplate
pdf = SimpleDocTemplate('011.pdf')
style = getSampleStyleSheet()
mystyle = style['Normal'] #默认样式,可以使用style.lsit()查看所有默认样式
contents = []
text = '''<para autoLeading="off" fontSize=8><font face="fs" >九月-海子</font><br/>
<font face="fs" color=red>目击众神死亡的草原上野花一片</font><br/>
<font face="fs" fontsize=7>远在远方的风比远方更远</font><br/>
</para>'''
contents.append(Paragraph(text,mystyle))
pdf.build(contents) #生成pdf