Reportschriftarten
Grundlagen
Schriftarten können vom Bearbeiter im Report hinterlegt werden. Dies sollte in den Stilen vorgenommen werden, um das Layout des Report ganzheitlich anzupassen. Hierbei gilt es zu beachten, dass Unterreports separat eingestellt werden müssen.
JasperStudio erlaubt die Auswahl aller im System befindlichen Schriftarten über die Drop-Down-Box. Nun liegt hierin aber das Problem. Die ausgewählte Schriftart ist zwar auf dem Client-System vorhanden, muss es aber nicht auf dem Applikationsserver. Das Problem tritt mit der Schriftart 'Tahoma' auf Linux-Systemen schon auf. Zwar kann der Report ohne Fehler gefüllt werden, doch wird ie eingestellte Schriftart beim Export als PDF-Datei oder bei der Anzeige im Web Client nicht verwendet.
In älteren JasperReports Versionen konnte pro Textfeld eine PDF-Schriftart hinterlegt werden, die sich aber nicht mit der normalen Schriftart deckt, noch Formatierung in HTML-Texten darstellen kann. Im JasperStudio wird diese Einstellung nicht mehr angeboten, da sie nicht mehr notwendig sind und wird als veraltete Einstellung als Warnung ausgegeben. In älteren Reports sollte diese Einstellung daher entfernt/geleert werden.
Die Lösung liegt in der 'Font-Extension' von JasperReports. Diese erlaubt beliebige True Type Schriftarten der Anwendung hinzuzufügen, ohne dass sie im System installiert sein müssten. Die Basis hierfür ist eine selbst zu erstellende Bibliothek, die in das custExt-Verzeichnis im Server und im Client kopiert werden muss. Im Groben enthält diese Bibliothek (eine ZIP-Datei mit der Endung .jar) alle Schriftart-Dateien (*.ttf) und eine beschreibende XML-Datei, in der alle ttf-Dateien referenziert sind.
Aus lizenz-rechtlichen Gründen ist es CURSOR nicht erlaubt, häufig benötigte Windows-Schriftarten direkt mit der Version auszuliefern. Eine Vorlage und die Unterstützung kann beim CURSOR-Support gerne erfragt werden.
Schriftart-Bibliothek erstellen
1. Das Verzeichnis fontlibrary
erstellen
2. In diesem Verzeichnis die Datei jasperreports_extension.properties
mit folgendem Inhalt anlegen:
net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.font=font/fonts.xml
3. Das Unterverzeichnis font
erstellen
4. In dieses Verzeichnis nun die Schriftart-Dateien (*ttf) kopieren
5. In diesem Verzeichnis die Datei fonts.xml
mit folgendem Inhalt anlegen:
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
<fontFamily name="Tahoma">
<normal>font/tahoma.ttf</normal>
<bold>font/tahomabd.ttf</bold> <!-- auch 'italic' und 'boldItalic' -->
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>
<export key="net.sf.jasperreports.html">Tahoma, Helvetica, sans-serif</export>
<export key="net.sf.jasperreports.xhtml">Tahoma, Helvetica, sans-serif</export>
</exportFonts>
</fontFamily>
</fontFamilies>
6. Den Inhalt des Verzeichnisses fontlibrary
zippen und als cursor-font.jar
ablegen
Schriftart-Bibliothek einbinden
Die erstellte Bibliothek muss nun im Applikationsserver und dem Client zur Verfügung erstellt werden. Dieser Vorgang ist ähnlich wie ein Version-Patch zu behandeln.
Applikationsserver
Kopieren nach
JBoss\modules\custom\main
Aufnahme der Bibliothek in der
JBoss\modules\custom\main\module.xml
Der Applikationsserver muss nun neu gestartet werden
Client
Kopieren nach
Client\custExt
Das Verzeichnis mit der neuen Bibliothek per Client-Update verteilen
JasperStudio
Die Schriftart muss im System installiert sein.
Die Bibliothek muss in das
lib
-Verzeichnis kopiert werden.Beim Bearbeiten wird der Klassenpfad auf die Datei lib/cursor-font.jar automatisch erzeugt