如何使用Python的fpdf库从波斯语(法尔西语)文本创建PDF文件?
如何使用Python的fpdf库从波斯语(法尔西语)文本创建PDF文件?
嗨,我来帮你搞定这个问题!你碰到的UnicodeEncodeError其实很常见——默认的Arial字体根本不支持波斯语字符,再加上fpdf库默认用latin-1编码,完全没法处理波斯语的Unicode字符,所以才会报错。下面是一步到位的解决方案:
解决步骤
准备支持波斯语的字体
先找一款支持波斯语的开源字体,比如Vazirmatn或者BNazanin,这些都是免费且好用的。把下载好的字体文件(比如Vazirmatn-Regular.ttf)放到你的项目目录里,或者专门的fonts子目录中。修改你的代码
调整代码来加载波斯语字体,并设置正确的编码和排版方式:from fpdf import FPDF def export_pdf(): # 初始化PDF时指定UTF-8编码,支持Unicode字符 pdf = FPDF(encoding='utf-8') pdf.add_page() # 添加波斯语字体,uni=True启用Unicode支持 # 注意:这里的字体文件名要和你实际的文件一致 pdf.add_font('Vazirmatn', '', 'Vazirmatn-Regular.ttf', uni=True) # 设置使用刚才添加的字体 pdf.set_font('Vazirmatn', size=15) # 输出波斯语文本,align='R'适配从右到左的阅读习惯 pdf.cell(200, 10, txt='این متن فارسی است.', ln=1, align='R') pdf.output('output.pdf') # 调用函数生成PDF export_pdf()
关键点说明
encoding='utf-8':告诉FPDF我们要处理Unicode字符,避免编码转换错误add_font(..., uni=True):启用字体的Unicode支持,这样才能正确渲染波斯语字符align='R':波斯语是从右到左书写的,设置右对齐才能让文本排版符合阅读习惯
小提示
如果字体文件不在项目根目录,记得把路径写对,比如字体在fonts子目录里,就写成'fonts/Vazirmatn-Regular.ttf'。
备注:内容来源于stack exchange,提问作者Ali SHOKOUH ABDI




