如何向PyFPDF添加新字体

4
我尝试将DejaVuCondensed.ttf复制到pyfpdf/font/中,但尝试失败。
>>> from pyfpdf import *
>>> p = FPDF()
>>> p.add_font('dejavucondensed')
SyntaxError: Non-ASCII character '\xfd' in file pyfpdf/font/dejavucondensed.font 
on line 2, 
but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
2个回答

1

对于那些在很长时间后看到这个的人,请尝试以下操作。我使用Python 3.8在Ubuntu Linux上。进入您安装的fpdf,对于我来说是在/usr/local/lib/python3.8/dist-packages/fpdf

如果那里没有一个名为fonts的文件夹,请执行mkdir fonts。从任何来源获取您所需字体的ttf文件,并将其放置在fonts文件夹中。我想要Calibri Regular并将我的文件命名为calibri_regular.ttf

然后在您的解释器或脚本中:

from fpdf import FPDF
pdf = FPDF()

pdf.add_font('Calibri Regular', '', 'calibri_regular.ttf', uni=True)
pdf.set_font('Calibri Regular', '', 12)

此时,您已准备好在该字体中编写PDF。

你确定文件夹应该命名为fonts而不是font吗? - undefined
我不再能够访问我之前使用的那台机器,但据我最好的回忆,是的,“字体”是正确的术语。 - undefined

1
这可能是一个Unicode/编码问题(请参见消息中链接的PEP)。我在这里没有安装pypdf,但根据add_font的参考文档,您需要使用uni参数:
pdf.add_font('DejaVu', '', 'DejaVuSansCondensed.ttf', uni=True)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接