3

我正在尝试在 Python 中将文本文件转换为 pdf,但出现错误。为什么会发生,我该如何解决?

这是我的代码:

import fpdf
from fpdf import FPDF

pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=15)
f = open("textfile.txt", "r")
for i in f:
    pdf.cell(200, 10, txt=i, ln = 1, align = 'C')
pdf.output("Output.pdf")

输出:错误

    p = self.pages[n].encode("latin1") if PY3K else self.pages[n] 
UnicodeEncodeError: 'latin-1' codec can't encode character '\u2013' in position 88: ordinal not in range(256)
4

2 回答 2

1

fpdf 中的所有标准字体都使用latin-1编码。如果要编写不在latin-1集合中的字符,则需要使用set_font指定外部字体。

参考: https ://pyfpdf.readthedocs.io/en/latest/reference/set_font/index.html

否则,您必须将您的字符串转换为latin-1(使用该encode方法)并指定是否忽略或替换坏字符(即那些不存在于 中的字符latin-1)。

于 2021-04-16T18:42:46.073 回答
0

这是因为 pyfpdf 的默认字体是 latin-1 编码的。

您需要下载像 Arial ( https://www.freefontspro.com/14454/arial.ttf ) 这样的 utf-8 编码字体,将其放在与 python 文件相同的目录中,然后使用添加字体

fpdf.add_font("Arial", "", "arial.ttf", uni=True)

设置字体时使用“Arial”

于 2021-11-18T01:40:20.073 回答