python - 如何在 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')
解决方案
这看起来应该可以解决您的问题: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')
推荐阅读
- ruby-on-rails - 如何在 Ruby on Rails 中进行猴子补丁
- reactjs - Gatsby 编译失败
- python - 使用户激活链接过期并从 django 中的数据库中删除
- java - 为什么 AbstractQueuedSynchronizer 没有让 acquire() 独占?
- c++ - C ++:将空对象分配给现有对象
- npm - Bamboo 构建失败,因为 webpack 没有找到 node_modules
- android - 当应用程序在 kotlin/android 中被杀死时,删除集合中特定文档(即当前用户文档)的所有子集合
- angular - 传递多个查询参数不起作用Angular 7
- c++ - 使用 cpp 将日志发送到 syslog 服务器
- graphql - GraphQL not null 可空对象的字段返回错误