Reputation: 1313
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.
Upvotes: 10
Views: 21393
Reputation: 644
<staticText>
<reportElement x="1" y="10" width="95" height="20" uuid="55eee6a7-1a94-4d89-a54d-79992a400cd6"/>
<textElement verticalAlignment="Bottom">
<font fontName="Calibri" size="9" isBold="true" pdfFontName="Helvetica-Bold" isPdfEmbedded="true"/>
</textElement>
<text><![CDATA[Item Code]]></text>
</staticText>
Need to add pdfFontName="Helvetica-Bold"
Upvotes: 0
Reputation: 1
I've found a solution that worked for me, It may help you too.
So, I was using Jaspersoft Studio to render a Pdf for my project. I used a bunch of Text Fields and Static Texts. I used "Calibri" font. I found out that when I export my Pdf using Spring Boot service, the bold, italic and bolditalic properties were missing. I found that some of my Static texts had their styling.
I just opened the Source code of my jrmxl file, and find out that some Text Fileds had:
<textElement markup="styled">
<font fontName="Calibri" size="9"/>
</textElement>
and some:
<textElement markup="styled">
<font size="9"/>
</textElement>
The ones without 'fontName="Calibri"' had their styling, so I did it for all the text component. and I left the style component in the header like this:
<style name="boldItalic" fontName="Calibri" isBold="true" isItalic="true"/>
Upvotes: 0
Reputation: 583
Adding maven artifact worked for me
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
<version>6.16.0</version>
</dependency>
Upvotes: 15
Reputation: 1934
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.
Upvotes: 1
Reputation: 1319
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:
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.
Upvotes: 7