昨天,就在昨天,咱用了用ReportLab,那效果真的好得不得了,可惜因為篇幅問題,隻是小刀牛試了一把,在解決了它的中文問題後,就戛然而止了,甚是寡淡無味。
為了讓Python3處理pdf的口味更重一些,咱就來給ReportLab添點料。
1這次要實現的功能,主要是标題和一段文字的描述,這麼有用的功能就問你驚不驚喜,意不意外。有關标題的功能,你可千萬别小瞧了,單是居中,就有很多人不知道怎麼實現才好。好了,别隻顧興奮了,咱開始搬磚吧。
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.platypus import SimpleDocTemplate, Paragraph
from reportlab.lib.pagesizes import letter
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib import colors
# 注冊字體
pdfmetrics.registerFont(TTFont('SimSun', 'SimSun.ttf'))
class Graphs:
def __init__(self):
pass
# 繪制标題
2如果隻是有個标題,總感覺很沙雕似的。行,那咱就再來一段内容,讓内容更炫實,更豐富一些。這裡的段落内容換行,也是大家經常尋找的答案,我寫好了,拿走不謝。好了,别隻顧興奮了,咱還得繼續搬磚。
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.platypus import SimpleDocTemplate, Paragraph
from reportlab.lib.pagesizes import letter
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib import colors
# 注冊字體
pdfmetrics.registerFont(TTFont('SimSun', 'SimSun.ttf'))
class Graphs:
def __init__(self):
pass
# 繪制标題
@staticmethod
def draw_title():
style = getSampleStyleSheet()
ct = style['Normal']
ct.fontName = 'SimSun'
ct.fontSize = 18
# 設置行距
ct.leading = 50
# 顔色
ct.textColor = colors.green
# 居中
ct.alignment = 1
# 添加标題并居中
title = Paragraph('程序員的興趣調查報告', ct)
return title
# 繪制内容
@staticmethod
def draw_text():
style = getSampleStyleSheet()
# 常規字體(非粗體或斜體)
ct = style['Normal']
#使用的字體s
ct.fontName = 'SimSun'
ct.fontSize = 14
# 設置自動換行
ct.wordWrap = 'CJK'
# 居左對齊
ct.alignment = 0
# 第一行開頭空格
ct.firstLineIndent = 32
# 設置行距
ct.leading = 30
text = Paragraph('程序員,是互聯網、移動互聯網和即将到來的物聯網時期的弄潮兒。這群特立獨行的人才,不知平時最喜歡什麼?他們的興趣真想讓人一探究竟。經過七七49天的調研,終于形成了一份不具備權威性的統計報告,現公布給大家。', ct)
return text
if __name__ == "__main__":
content = list()
# 添加标題
content.append(Graphs.draw_title())
# 添加段落
content.append(Graphs. draw_text ())
# 生成pdf文件
doc = SimpleDocTemplate('report.pdf', pagesize=letter)
doc.build(content)
,