iText pdf library
Website search

Why is my font not applied when I create a PDF document?

I am generating PDF documents with iText. When I try to include the "Agenda Tabular Light" font, iText ignores my choice of font. How can I fix it?

I am generating PDF documents with iText. When I try to include the "Agenda Tabular Light" font, iText ignores my choice of font. I confirmed that the font isn't set using Adobe Reader's File > Properties > Fonts. The PDF shows that Helvetica was used, but I didn't choose Helvetica. The colors are visible, but not the font.

My code looks like this:

public static final Font FONT_HEADER = FontFactory.getFont(AGENDA_TABULAR_LIGHT, 18, Font.NORMAL, TITLE_COLOR);
I even I tried a sample program.


// step 1
Document document = new Document();
// step 2
PdfWriter.getInstance(document, new FileOutputStream(filename));
Q> // step 3; // step 4: Font font = FontFactory.getFont("Agenda Tabular Light"); System.out.println(font.toString()); document.add(new Phrase("Agenda Tabular Light J j", font)); Font fontbold = FontFactory.getFont("Times-Roman", 12, Font.BOLD); document.add(new Phrase("Times-Roman, Bold", fontbold)); document.add(Chunk.NEWLINE);

It displays like Times-Roman and uses a different font for agenda. But whenever I see fonts tab on properties of Adobe Reader, it displays Helvetica.

Posted on StackOverflow on Jul 1, 2015 by lasheul

By default only the standard Type 1 fonts are known to the FontProgramFactory (FontFactory in iText 5) and "garamond bold" isn't one of those fonts, hence Helvetica will be used instead (Helvetica is the default font in iText).

You can "teach" the FontProgramFactory where to find other fonts by registering them. You could try:


But that is a very expensive operation as you ask iText to search your operating system for font files in different font directories (e.g. C:/Windows/Fonts). This can take a few seconds and you'll end up with much more fonts than you need (and maybe the font you need won't be registered anyway).

The best way is to register the fonts you need like this:

FontProgramFactory.registerFont("c:/windows/fonts/garabd.ttf", "garamond bold");

We tell iText where to find the .ttf file ("c:/windows/fonts/garabd.ttf") and we define an alias for that font ("garamond bold"). Now that the font name is registered, we can start using it:

PdfFont myBoldFont = PdfFontFactory.createRegisteredFont("garamond bold");

Click this link if you want to see how to answer this question in iText 5.


Still have questions? 

We're happy to answer your questions. Reach out to us and we'll get back to you shortly.

Contact us
Stay updated

Join 11,000+ subscribers and become an iText PDF expert by staying up to date with our new products, updates, tips, technical solutions and happenings.

Subscribe Now