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”