Я пытаюсь добавить шрифт из библиотеки 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')
Как видите, я пробовал несколько способов, но ни один из них, похоже, не работает.Вот что возвращает консоль:
oof foo Traceback (последний вызов был последним): файл "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 \ сайт-пакеты \ FPDF \ ttfonts.py»,строка 459, в makeSubset self.fh = open (file, '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-пакеты \ fpdf \ fpdf.py ", строка 469, в add_font повысить RuntimeError (" Файл шрифта TTF не найден:% s "% fname) RuntimeError: Файл шрифта TTF не найден: c: \ Users \ ciszk \ Documents \ ECP \ data\ DejaVuSans.ttf
Я что-то упускаю из виду?Что я могу сделать, чтобы успешно добавить шрифт?