Python fpdf 没有给出正确的输出
Python fpdf is not giving correct output
使用 fpdf 模块时,问题在于使用特殊字符,例如 'ć,č,š,đ,ž...
我试过这样简单的代码:
from fpdf import FPDF
pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=15)
f = open("data.txt", "r")
for x in f:
pdf.cell(200, 10, txt=x, ln=1, align='C')
pdf.output("mytestdata.pdf")
引发的错误是:UnicodeEncodeError: 'latin-1' codec can't encode character '\u2021' in position 77: ordinal not in range(256)
当我使用 with open
读取文本文件并 decode
使用 latin-1
时,输出错误。
with open("data.txt", 'rb') as fh:
txt = fh.read().decode('latin-1')
字母与特殊符号混合。但这是不引发 UnicodeEncodeError
的唯一方法。
data.txt
的内容:
test1: Čč
test2: Ćć
test3: Žž
test4: Đđ
test5: Šš
添加对 Unicode 字体的支持,并确保以保存文件的编码读取文件。同时从文件中读取的行中删除尾随换行符,因为它也会出错。
from fpdf import FPDF
pdf = FPDF()
pdf.add_page()
pdf.add_font('Arial', '', 'c:/windows/fonts/arial.ttf', uni=True) # added line
pdf.set_font('Arial', size=15)
with open("data.txt", encoding='utf8') as f:
for x in f:
pdf.cell(200, 10, txt=x.strip(), ln=1, align='C')
pdf.output("mytestdata.pdf")
结果:
使用 fpdf 模块时,问题在于使用特殊字符,例如 'ć,č,š,đ,ž...
我试过这样简单的代码:
from fpdf import FPDF
pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=15)
f = open("data.txt", "r")
for x in f:
pdf.cell(200, 10, txt=x, ln=1, align='C')
pdf.output("mytestdata.pdf")
引发的错误是:UnicodeEncodeError: 'latin-1' codec can't encode character '\u2021' in position 77: ordinal not in range(256)
当我使用 with open
读取文本文件并 decode
使用 latin-1
时,输出错误。
with open("data.txt", 'rb') as fh:
txt = fh.read().decode('latin-1')
字母与特殊符号混合。但这是不引发 UnicodeEncodeError
的唯一方法。
data.txt
的内容:
test1: Čč
test2: Ćć
test3: Žž
test4: Đđ
test5: Šš
添加对 Unicode 字体的支持,并确保以保存文件的编码读取文件。同时从文件中读取的行中删除尾随换行符,因为它也会出错。
from fpdf import FPDF
pdf = FPDF()
pdf.add_page()
pdf.add_font('Arial', '', 'c:/windows/fonts/arial.ttf', uni=True) # added line
pdf.set_font('Arial', size=15)
with open("data.txt", encoding='utf8') as f:
for x in f:
pdf.cell(200, 10, txt=x.strip(), ln=1, align='C')
pdf.output("mytestdata.pdf")
结果: