You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jupyter Notebook中FPDF add_font()函数无法读取TTF文件路径的问题问询

解决PDF生成时字体路径找不到的问题

这个错误的核心原因很明确:你的代码里指定的字体路径和实际存放字体的文件夹不匹配,导致程序找不到目标字体文件。下面具体拆解可能的原因和对应的解决办法:

可能的原因

  • 代码路径硬编码未同步更新:你提到修改过文件夹路径名称,但加载字体的代码里仍然沿用了旧的路径font//gothambold.ttf,没有改成实际的2.font文件夹路径。比如之前项目里字体放在font文件夹,后来改成2.font,但代码里的路径字符串没跟着改。
  • Jupyter工作目录干扰:Notebook运行时的当前工作目录可能不是你的项目根目录。举个例子,如果你的Notebook是在1.code文件夹里打开运行的,那代码里的font//gothambold.ttf会被解析成1.code/font/gothambold.ttf,而你的字体实际在上级目录的2.font里,自然找不到。

具体解决步骤

1. 修正代码中的字体路径

找到代码中加载TTF字体的代码段,通常是类似这样的:

from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont

# 旧的错误路径
pdfmetrics.registerFont(TTFont('gothambold', 'font//gothambold.ttf'))

把路径改成实际的位置:

  • 如果Notebook的工作目录是项目根目录(即包含1.code、2.font的文件夹),直接改成:
    pdfmetrics.registerFont(TTFont('gothambold', '2.font//gothambold.ttf'))
    
  • 如果Notebook在1.code文件夹里,需要用../回到上级目录:
    pdfmetrics.registerFont(TTFont('gothambold', '../2.font//gothambold.ttf'))
    

2. 确认Jupyter的当前工作目录

不确定工作目录的话,先在Notebook里运行这段代码查看:

import os
print(os.getcwd())

根据输出的路径来调整字体路径:

  • 输出如果是你的项目路径/1.code,就用../2.font/gothambold.ttf
  • 输出如果是项目根路径,就用2.font/gothambold.ttf

3. 用绝对路径彻底避免相对路径问题

如果不想纠结相对路径的问题,直接用字体文件的绝对路径更稳妥,比如:

# Windows系统示例
pdfmetrics.registerFont(TTFont('gothambold', 'D:/你的项目路径/2.font/gothambold.ttf'))

或者用os.path.join动态构建路径,适配不同系统:

import os
# 假设项目根目录是当前工作目录的上级(如果Notebook在1.code里)
project_root = os.path.dirname(os.getcwd())
font_path = os.path.join(project_root, '2.font', 'gothambold.ttf')
pdfmetrics.registerFont(TTFont('gothambold', font_path))

总结

本质上就是代码里的路径和实际文件夹结构不匹配,只要把字体路径修正到正确的位置,这个错误就能解决。

内容的提问来源于stack exchange,提问作者asif abdullah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 09:32:46