Jasper Reports bietet in der Java-Welt eine tolle Möglichkeit, um Reports für die unterschiedlichsten Einsatzzwecke zu generieren. Gerade im Zusammenspiel mit Spring Boot sollten wir Schriftarten, die wir verwenden, in unserer Anwendung inkludieren, um sicherzustellen, dass diese zur Laufzeit auch zur Verfügung stehen. Für Jasper Reports wird dies über sogenannte Font Extensions gelöst, die über den Report-Designer erstellt werden können, ( s. https://community.jaspersoft.com/wiki/custom-font-font-extension )
Im entsprechenden „fonts“ Menü im Designer lassen sich diese Extensions auch exportieren. Anstatt diese nun manuell im eigenen Nexus zu integrieren, lassen diese sich auch ganz einfach direkt in unserer Spring Boot Anwendung einfügen. Neben der obligatorischen Maven Abhängigkeit auf JasperReports fügen wir die offizielle Font-Extensions-Erweiterung hinzu:
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>${jasper-reports-version}</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
<version>${jasper-reports-version}</version>
</dependency>
In unserem src/main/resource Ordner legen wir nun eine entsprechende Properties-Datei ab, die unsere Fonts referenziert (alle diese Dateien können aus der exportieren jar-Dateien entnommen werden. Im Fall von mehreren Schriftarten lediglich die „families“ wie hier zu sehen erweitern)
jasperreports_extension.properties
net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.ireportfamily1658305078908=fonts/fontsfamily1658305078908.xml
net.sf.jasperreports.extension.simple.font.families.ireportfamily1658305086836=fonts/fontsfamily1658305086836.xml
Die hier referenzierten xml Dateien und Font-Ordner sind 1:1 kopieren aus den exportieren jars, sodass wir am Ende folgende Dateistruktur in unserem Projekt vorliegen haben:
src/main/resources/
- fonts
-- Roboto (TTF-Files)
-- SuperFont(TTF-Files)
-- fontsfamily1658305078908.xml
-- fontsfamily1658305086836.xml
jasperreports_extension.properties