fpdf "UnicodeEncodeError: 'latin-1' codec can't encode character '\u2013' in position 88: ordinal not in range(256)"
fpdf "UnicodeEncodeError: 'latin-1' codec can't encode character '\u2013' in position 88: ordinal not in range(256)"
我试图在 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)
fpdf中的所有标准字体都使用latin-1
编码。如果要写入不在 latin-1
集中的字符,则需要使用 set_font
指定外部字体。
参考:
https://pyfpdf.readthedocs.io/en/latest/reference/set_font/index.html
否则,您必须将字符串转换为 latin-1
(使用 encode
方法)并指定是否忽略或替换坏字符(即不存在于latin-1
).
这是因为 pyfpdf 的默认字体是 latin-1 编码的。
您需要下载像 Arial (https://www.freefontspro.com/14454/arial.ttf) 这样的 utf-8 编码字体,将其放在与 python 文件相同的目录中,然后使用 [=12= 添加字体]
fpdf.add_font("Arial", "", "arial.ttf", uni=True)
设置字体时使用'Arial'
我试图在 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)
fpdf中的所有标准字体都使用latin-1
编码。如果要写入不在 latin-1
集中的字符,则需要使用 set_font
指定外部字体。
参考: https://pyfpdf.readthedocs.io/en/latest/reference/set_font/index.html
否则,您必须将字符串转换为 latin-1
(使用 encode
方法)并指定是否忽略或替换坏字符(即不存在于latin-1
).
这是因为 pyfpdf 的默认字体是 latin-1 编码的。
您需要下载像 Arial (https://www.freefontspro.com/14454/arial.ttf) 这样的 utf-8 编码字体,将其放在与 python 文件相同的目录中,然后使用 [=12= 添加字体]
fpdf.add_font("Arial", "", "arial.ttf", uni=True)
设置字体时使用'Arial'