如何在 FPDF 中显示西里尔字母?没有技巧encode/decode并没有导致预期的结果。编码:
from fpdf import FPDF
pdf = FPDF()
pdf.add_page()
pdf.add_font('DejaVu', '', 'Roboto-Light.ttf', uni=True)
pdf.set_font("Arial", size=12)
pdf.cell(200, 10, txt="Заявка №_01-000001", ln=1, align="C")
pdf.output("simple_demo.pdf")
总是导致错误:
p = self.pages[n].encode("latin1") if PY3K else self.pages[n]
UnicodeEncodeError:“latin-1”编解码器无法对位置 51-56 中的字符进行编码:序数不在范围内(256)
如果您尝试这样做:
pdf.cell(200, 10, txt="Заявка №_01-000001".encode('latin-1', 'replace').decode('latin-1'), ln=1, align="C")
...我们将在文件中收到 kryakozyabry。
谁面对?
实际上问题是所选字体不支持unicode。
所需字体 FPDF 的免费 Unicode TrueType 字体包
代码示例
更详细的例子