首页 > 解决方案 > 如何在 PyFPDF 中导出立陶宛字母 (ąčęėįšųūž)?

问题描述

每当我尝试使用任何立陶宛字母 (ąčęėįšųūž) 生成 PDF 时,我都会收到“UnicodeEncodeError: 'latin-1' codec can't encode character '\u0307' in position...”。尝试添加 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')

标签: pythonpdfpdf-generationfpdf

解决方案


这看起来应该可以解决您的问题:https ://pyfpdf.readthedocs.io/en/latest/Unicode/index.html

下载支持 Unicode 字符的字体并按照上面网站上的说明进行操作。下面的代码示例假设您下载了 DejaVuSans 字体(我从这里获得)。

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')

推荐阅读