Use custom fonts when creating pdf using iReport

Sangeet Menon picture Sangeet Menon · Jan 24, 2012 · Viewed 47.6k times · Source

iReport Version : 3.7.1

I approached this problem in two ways.

My first method

I am creating a pdf page in iReport and I have one of the fields (from database) set to a font Gujarati-Salarl (A font for a regional language of India).

This font is available in the font list of iReport. When I hit preview I get the desired output , with the field in the required font style.

Everything till here is fine.

But the pdf file generated still contains the same original font in English characters.

The result is same whether i call the report from the application or from a JAVA file.

After a bit of study I found this , a second method

JRProperties.setProperty("net.sf.jasperreports.default.pdf.font.name", "C:\\Gujrati-Saral-1.ttf");

This sets the font of the pdf to the ttf font provided but now the entire pdf comes in the Guarati-saral font which is not what I am looking for..

Is there a way to specifically apply this font only to that one particular field?

or

when going by the second method is there a way to not applying the font Guarati-saral to all other fields except the required one ?

Answer

Alex K picture Alex K · Jan 25, 2012

You should use the Font Extensions mechanism.

After creating the font and exporting it as a jar file you should add generated jar file to the application classpath.

a) Creating new font in iReport (via Options -> Fonts -> "Install Font" Button)

Creating the new font descriptor in iReport

b) Exporting the new font (or the existing one) as jar file in iReport (via Options -> Fonts -> "Export as extension" Button)

enter image description here

a) Creating new font in JasperReports Studio (via Window -> Preferences -> JasperStudio -> Fonts -> "Add" Button)

b) Configure your fonts

Exporting font as jar file

c) Create JAR with your fonts in it

Export Font Jar

enter image description here

You can find more information about using Font Extensions here.