7

In Jaspersoft Studio I have created a report where I want to display title in bold. If I use sans serif font then it is working correctly. If I use other fonts, bold is displayed in the preview of Jaspersoft Studio, but is not showing when the report is run in the Jasper server. Please help.

Alex K
  • 22,315
  • 19
  • 108
  • 236
Akhilesh
  • 1,243
  • 4
  • 16
  • 49
  • For proper fonts in PDFs special considerations are necessary. For JasperReports as embedded library font extensions are a solution. I don't know, though, how to do the equivalent on Jasper server. – mkl Sep 23 '14 at 05:51
  • See: http://community.jaspersoft.com/wiki/custom-font-font-extension – Dave Jarvis May 09 '16 at 18:19

3 Answers3

10

Adding maven artifact worked for me

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports-fonts</artifactId>
    <version>6.16.0</version>
</dependency>
Asad Sarwar
  • 533
  • 3
  • 10
7

You need to create a jasper fonts extension jar and place it into your classpath both compile-time (while compiling the jrxmls) as well as run-time (while running reports). Here is how the jar (e.g. jasperreports-fonts-5.5.2.jar) should look:

pic1

pic2

The jasperreports_extension.properties should contain few properties to initialize fonts. (I have used spring based fonts initialization. You might need to add couple of spring jars like spring-core, spring-beans etc. to your classpath if not already present.)

net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.extensions.SpringExtensionsRegistryFactory
net.sf.jasperreports.extension.fonts.spring.beans.resource=fonts/fonts_def.xml

Now the fonts.xml to defined what fonts you want to add.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

   <bean id="fontBean001" class="net.sf.jasperreports.engine.fonts.SimpleFontFamily">
       <property name="name" value="Tahoma"/>
       <property name="normal" value="fonts/Tahoma.ttf"/>
       <property name="bold" value="fonts/Tahoma_Bold.ttf"/>
       <property name="pdfEmbedded" value="true"/>
   </bean>

   <bean id="fontBean002" class="net.sf.jasperreports.engine.fonts.SimpleFontFamily">
        <property name="name" value="Arial"/>
        <property name="normal" value="fonts/Arial.ttf"/>
        <property name="bold" value="fonts/Arial_Bold.ttf"/>
        <property name="italic" value="fonts/Arial_Italic.ttf"/>
        <property name="boldItalic" value="fonts/Arial_Bold_Italic.ttf"/>
        <property name="pdfEmbedded" value="true"/>
    </bean>

</beans>

Note the property "pdfEmbedded" is "true". Finally add the .ttf file for the fonts you want to add to jar.

keenUser
  • 1,279
  • 3
  • 16
  • 33
1

Just go to this site for adding your custom fonts to PDF with Jasper:

Custom Font with the Font Extension

There's an illustrated guide showing you how to create it. Just download a *.ttf file for your font (eg.: Arial.ttf.)

Create the extension and export it as a *.jar file with the help of Eclipse.

Finally add the *.jar to your project. That's it.

Fábio
  • 3,291
  • 5
  • 36
  • 49
Arundev
  • 1,388
  • 23
  • 22