每当我试图用任何立陶宛字母(ąčęėįšųūž)生成PDF时,我都会收到“UnicodeEncodeError:'latin-1'编解码器无法对字符'\ u0307'进行编码......”。尝试添加TTF字体,找到我的本地Arial.ttf文件,该文件在任何其他应用程序中使用时工作正常,但如果与PyFPDF一起使用,它只会在使用字母的位置导出空白文本。有没有办法导出这些字母?
#!/usr/local/bin/python3
import fpdf
pdf = fpdf.FPDF()
pdf.add_page()
pdf.set_font("Arial", "B", 18)
pdf.set_xy(25, 25)
pdf.cell(w=160, h=10, align="C", txt="VAT Invoice")
pdf.set_font("Arial", "", 14)
pdf.cell(w=160, h=10, align="C", txt="SĄSKAITA ė")
pdf.output('./invoice.pdf', 'F')
这看起来应该可以解决你的问题:https://pyfpdf.readthedocs.io/en/latest/Unicode/index.html
下载支持Unicode字符的字体,并按照上面站点上的说明进行操作。下面的代码示例假设您下载了DejaVuSans字体(我从here获得)。
import fpdf
pdf = fpdf.FPDF()
pdf.add_page()
pdf.add_font("DejaVu", "", "DejaVuSans.ttf", uni=True)
pdf.set_font("DejaVu", "", 14)
pdf.cell(w=160, h=10, align="C", txt="SĄSKAITA")
pdf.output('./invoice.pdf', 'F')