來客製化樣式(Style),可以改文字顏色、字體、字體大小
先拿預設的樣式
有 Normal、Heading1、Title、Heading2、Heading3 ...等
可以從原始碼看到。
可以看一下原始碼預設的樣式
Normal:
fontSize=10
leading=12
Heading1(H1):
fontSize=18
leading=22
spaceAfter=6
...
這裡就用Normal 來改
有很多屬性可以改,挑幾個來說,詳細可以看官方說明文件
parent: 這個是指以哪一個預設樣式,繼承他的屬性
alignment: 對齊方式 TA_LEFT, TA_CENTER, TA_RIGHT, TA_JUSTIFY
backColor: 背景顏色
borderColor: 邊框顏色
borderRadius: 圓角
borderWidth: 邊框寬度
fontName: 字體
fontSize: 字體大小
textColor: 文字顏色 Color(0,0,0,1)
客製化樣式設定: 置中對齊,字體20,藍色
from reportlab.lib import colors
from reportlab.lib.enums import TA_CENTER
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"],
fontSize=20,
alignment=TA_CENTER,
textColor=colors.blue,
)
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)
輸出結果
之後可以先把會用到的字體樣式先定義好,之後就可以直接使用了,如果要顯示中文的話,就一定要寫樣式(ParagraphStyle)了。
參考資料: