我正在尝试将 pfpdf 库中的字体添加到生成的 pdf 文件中,但将 DejaVuSans.ttf 移动到“data”目录后,无法再找到字体。
这是一个简化的代码:
from fpdf import FPDF
import os
pdf = FPDF()
if os.path.isfile("./data/DejaVuSans.ttf"):
print("oof")
if os.path.isfile(os.path.join(os.getcwd(), "data", "DejaVuSans.ttf")):
print("foo")
print(os.path.join(os.getcwd(), "data", "DejaVuSans.ttf"))
goal_dir = os.path.join(os.getcwd(), "data/DejaVuSans.ttf")
pdf.add_font("DejaVuSans", "", "DejaVuSans.ttf", uni=True) # working if .ttf is in the same directory
#pdf.add_font("DejaVuSans", "", "./data/DejaVuSans.ttf" , uni=True) # not working
#pdf.add_font("DejaVuSans", "", os.path.join(os.getcwd(), "data", "DejaVuSans.ttf"), uni = True) # not working
#pdf.add_font("DejaVuSans", "", r"c:\Users\ciszk\Documents\ECP\data\DejaVuSans.ttf", uni = True) # not working
#pdf.add_font("DejaVuSans", "", os.path.abspath(goal_dir), uni = True) # not working
pdf.set_font("DejaVuSans", size=11)
pdf.add_page()
pdf.cell(0, 10, 'Hello', 0, 1, 'C')
pdf.output('oopsie.pdf')
正如你所看到的,我尝试了多种方法,但似乎都不起作用。
这就是控制台返回的内容:
钱币
富
回溯(最近一次调用最后一次):
文件“c:\Users\ciszk\Documents\ECP\tempCodeRunnerFile.py”,第 25 行,位于
pdf.output('oopsie.pdf')
文件“C:\Users\ciszk\AppData\Local\Programs\Python\Python37-32\lib\site-packages\fpdf\fpdf.py”,第 1065 行,在输出中
self.close()
文件“C:\ Users \ ciszk \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ fpdf \ fpdf.py”,第246行,关闭
self._enddoc()
文件“C:\ Users \ ciszk \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ fpdf \ fpdf.py”,第1637行,在_enddoc中
self._putresources()
文件“C:\ Users \ ciszk \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ fpdf \ fpdf.py”,第1584行,在_putresources中
self._putfonts()
文件“C:\ Users \ ciszk \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ fpdf \ fpdf.py”,第1288行,在_putfonts中
ttfontstream = ttf.makeSubset(font['ttffile'], 子集)
文件“C:\Users\ciszk\AppData\Local\Programs\Python\Python37-32\lib\site-packages\fpdf\ttfonts.py”,第 459 行,在 makeSubset 中
self.fh = 打开(文件,'rb')
FileNotFoundError:[Errno 2]没有这样的文件或目录:'DejaVuSans.ttf'
如果数据目录没有 DejaVuSans.ttf,则会引发错误:
回溯(最近一次调用最后一次):
文件“c:\Users\ciszk\Documents\ECP\tempCodeRunnerFile.py”,第 18 行,位于
pdf.add_font("DejaVuSans", "", os.path.abspath(goal_dir), uni = True) # 不起作用
文件“C:\ Users \ ciszk \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ fpdf \ fpdf.py”,第469行,在add_font中
引发 RuntimeError("TTF 字体文件未找到:%s" % fname)
运行时错误:找不到 TTF 字体文件:c:\Users\ciszk\Documents\ECP\data\DejaVuSans.ttf
我错过了一些非常明显的东西吗?如何才能成功添加字体?