You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Python的fpdf库从波斯语(法尔西语)文本创建PDF文件?

如何使用Python的fpdf库从波斯语(法尔西语)文本创建PDF文件?

嗨,我来帮你搞定这个问题!你碰到的UnicodeEncodeError其实很常见——默认的Arial字体根本不支持波斯语字符,再加上fpdf库默认用latin-1编码,完全没法处理波斯语的Unicode字符,所以才会报错。下面是一步到位的解决方案:

解决步骤

  1. 准备支持波斯语的字体
    先找一款支持波斯语的开源字体,比如Vazirmatn或者BNazanin,这些都是免费且好用的。把下载好的字体文件(比如Vazirmatn-Regular.ttf)放到你的项目目录里,或者专门的fonts子目录中。

  2. 修改你的代码
    调整代码来加载波斯语字体,并设置正确的编码和排版方式:

    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

火山引擎 最新活动