Skip to content
Advertisement

Problem importing fonts with FPDF using python

I’ve been trying to import specialty fonts beyond what is default included with the FPDF package with Python, using the pdf.add_font() command. The code below produces an error of an Undefined font, as though I didn’t just use pdf.add_font(). Below you can find a sample of my code, as well as proof that the relevant fonts are in the directory specified in the pdf.add_font() command. I have also tried installing the relevant fonts in the C:WindowsFonts directory.

from fpdf import FPDF

# Makes new pdf
nbareport = FPDF('P', 'mm', 'Letter')

# Imports new fonts
nbareport.add_font('CMU Serif', '', r'C:UsersgregdPycharmProjectspythonProject2venvLibsite-packagesmatplotlibmpl-datafontsttfcmu.serif-roman.ttf', uni=True)
nbareport.add_font('CMU Serif', 'B', r'C:UsersgregdPycharmProjectspythonProject2venvLibsite-packagesmatplotlibmpl-datafontsttfcmunbx.ttf', uni=True)

# Create instance of FPDF class
# Letter size paper, use inches as unit of measure
nbareport = FPDF(format='letter', unit='in')

nbareport.set_font('CMU Serif', '', 10)
nbareport.cell('Hello World!')
nbareport.output('test.pdf', 'F')

Relevant error message:

Traceback (most recent call last):
  File "C:UsersgregdPycharmProjectspythonProject2NBA DataFPDF tester.py", line 14, in <module>
    nbareport.set_font('CMU Serif', '', 10)
  File "C:UsersgregdPycharmProjectspythonProject2venvlibsite-packagesfpdffpdf.py", line 603, in set_font
    self.error('Undefined font: '+family+' '+style)
  File "C:UsersgregdPycharmProjectspythonProject2venvlibsite-packagesfpdffpdf.py", line 227, in error
    raise RuntimeError('FPDF error: '+msg)
RuntimeError: FPDF error: Undefined font: cmu serif

Proof of fonts in the correct directory

Thank you!

Advertisement

Answer

This line:

nbreport = FPDF(format='letter', unit='in')

creates a brand-new FPDF instance and helpfully deletes the one in which you so carefully added the fonts. You need to add the fonts to the instance you’re actually using.

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement