iT邦幫忙

2025 iThome 鐵人賽

DAY 13
0

昨天發現字體問題,pdf會是亂碼,https://ithelp.ithome.com.tw/upload/images/20250927/20168983SsdReEPLmg.png

今天來修改一下,
改用中文字體 (TTF),用macOS內建的PingFang,然後在 reportlab 裡註冊,這樣就能正常顯示中文。
以下只顯示新增跟修改的部分
上方先導入
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
import os

在此註冊中文字體
def save_as_pdf(filename, text):
font_path = "/System/Library/Fonts/Supplemental/PingFang.ttc"
if os.path.exists(font_path):
pdfmetrics.registerFont(TTFont("PingFang", font_path))
font_name = "PingFang"
else:
如果不適用 PingFang(中文) ,就 fallback 回到 Helvetica(英文用)
font_name = "Helvetica"

c = canvas.Canvas(filename, pagesize=A4)
c.setFont(font_name, 12)

width, height = A4
y = height - 50
for line in text.split("\n"):
    c.drawString(50, y, line)
    y -= 20
    if y < 50:  

換頁
c.showPage()
c.setFont(font_name, 12)
y = height - 50

c.save()

上一篇
AI 旅遊規劃師:Day 6
下一篇
AI 旅遊規劃師:Day 8
系列文
利用生成式AI連結生活,完成自我挑戰16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言