python之路

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
上一篇下一篇

猜你喜欢

热点阅读