如何用PyFPDF导出立陶宛字母(ąčęėįšųūž)?

时间:2019-04-01 23:58:07

标签: python pdf pdf-generation fpdf

每当我尝试生成带有任何立陶宛字母(±čęėįšųūž)的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')

1 个答案:

答案 0 :(得分:0)

这看起来应该可以解决您的问题: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')