Java, Fonts, PDF und JasperReports

AUA. Heute hatte ich einen Bug. Wie in einem Post geschrieben erstelle ich mit JasperReport ein paar einfache Briefe in PDF. Das Erstellen läuft auf einem Websphere Application Server. Es fehlten aber auf einmal Zeichen in einem kleinen Textfeld. Der Inhalt dieser Felder ist mit einem Style definiert:

<style
 	name="dadaStyle"
 	fontName="Monospaced"
 	fontSize="8"
 	pdfFontName="Courier"
 />

Je nachdem welche Buchstaben in dem Feldchen enthalten waren, wurde ein Zeichen abgeschnitten. Unter Linux war alles korrekt und auch unter Windows waren alle Zeichen da. Aber unter Solaris fehlten ab und zu Buchstaben.

Das man den gleichen Font in JasperReports für Java/AWT und PDF nehmen muss ist dokumentiert. Aber wie kann solch ein Verhalten auftreten, wenn als logischer Fontname Monospaced definiert ist – da sind doch alle Zeichen gleich breit.

Nachdem ich mir aber die font.properties-Datei von JRE unter den verschiedenen Betriebssystem angeschaut hatte wurde klar, dass unter Solaris in unserem Fall für Monospaced nicht die mit JDK mitgelieferten Fonts benutzt werden, sondern die vom OS. Und wenn nun kein richtiger Font auf dem System verfügbar ist, dann wird eben für das Rendern in AWT ein anderer genommen.

Also habe ich dann den nichtproportionalen Font eingetragen der mit dem JDK mitgeliefert wird:

<style
 	name="dadaStyle"
 	fontName="Lucida Sans Typewriter"
 	fontSize="8"
 	pdfFontName="Courier"
 />

Problem gelöst.

One thought on “Java, Fonts, PDF und JasperReports

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s