開始使用 ReportLab
第一個就是Hello World,來產生一個文字是Hello World吧
說明:
SimpleDocTemplate(): 第一個參數是檔案名稱
Paragraph(): 顯示文字
程式碼
from reportlab.platypus import SimpleDocTemplate, Paragraph
fileName = "example.pdf"
# 建立一個物件,給檔案路徑
pdfTemplate = SimpleDocTemplate(fileName)
story = []
# 加入一個段落文字
story.append(Paragraph("Hello World"))
# 產生PDF
pdfTemplate.build(story)
就會產生一個example.pdf,顯示Hello World
輸出結果
就完成了一個有Hello World 的PDF
來顯示中文字 "你好世界"
加上
...
story.append(Paragraph("你好世界"))
...
輸出結果,預設字體沒辦法顯示中文,就會變成黑色框框
所以要加入新的字體
這裡用標楷體,放在font/kaiu.ttf
完整程式
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.platypus import SimpleDocTemplate, Paragraph
# 拿預設的樣式
styles = getSampleStyleSheet()
styleNormalCustom = ParagraphStyle(
'styleNormalCustom',
fontName='kaiu',
parent=styles["Normal"],
)
pdfmetrics.registerFont(TTFont('kaiu', "font/kaiu.ttf"))
fileName = "example.pdf"
pdfTemplate = SimpleDocTemplate(fileName)
story = []
story.append(Paragraph("Hello World"))
story.append(Paragraph("你好世界", styleNormalCustom))
pdfTemplate.build(story)
輸出結果,就可以正常顯示中文字
參考資料: