Python reportlab 生成带有重音符号的单词存在字体问题的 PDF,例如 Māngere

问题描述 投票:0回答:1

如何解决以下字体问题?

buffer = io.BytesIO()
c = canvas.Canvas(buffer)
c.drawString(100, 100, "Māngere")
c.save()
buffer.seek(0)
return FileResponse(buffer, filename="test.pdf")

上面的代码无法在生成的PDF上正确显示“Māngere”,如下:

python pdf reportlab non-ascii-characters
1个回答
0
投票

正如 Kacper 上面所说(我只是在这里重新发布以使其更明显),您需要使用 ttf 字体。

您可以通过这种方式轻松注册:

from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont

pdfmetrics.registerFont(TTFont('PlexMono', 'IBMPlexMono-Regular.ttf')) #I found this on Google fonts

#...#

canvas.setFont("PlexMono", 20)

Result after writing out to pdf

© www.soinside.com 2019 - 2024. All rights reserved.