BIRT: pdf Emitter, Last / verwendet Schriftarten aus relativem Pfad oder von JAR-Dateien
Frage
I BIRT nutzen seit frühen Tagen und nach wie vor Rätsel in Bezug auf PDF Emitter haben.
Kurzgeschichte : Kann ich fontsConfig.xml konfigurieren Schriften relativen Pfad zu laden oder von Gläsern?
Lange Geschichte: Wir verwenden sowohl FOP und BIRT für PDF in unserem Web-Anwendung zu generieren. Es wäre schön, Schriftarten zwischen Bibliotheken zu teilen. Leider kann ich nicht einen Weg, es zu tun mit BIRT 2.3.1
findenDie Wurzel des Übels ist fontsConfig.xml Wenn ich es so konfigurieren, wie unten gezeigt, funktioniert gut:
<font-paths>
<path path="fonts"/>
</font-paths>
Aber Pfad erlaubt mir nicht, unter Verwendung weder relative Pfade nicht Classpath (oder ich kann kein geeigneter Weg finden, wie sie konfigurieren). Weder config1 noch config2 funktioniert.
Config1:
<font-paths>
<path path="../fonts"/>
</font-paths>
CONFIG2:
<font-paths>
<path path="classpath:fonts"/>
</font-paths>
wird Irgendwelche Gedanken geschätzt werden.
Lösung
Bei einigen BIRT Versionen können Sie ein SystemProperty „birt.font.dirs“ verwenden. Dies überschreibt die fontsConfig.xml.
Nun, das einmal gearbeitet, aber offensichtlich war es aus dem BIRT-Quellcode später entfernt.
Jetzt können Sie so etwas wie
nennenEngineConfig engineConfig = new EngineConfig();
URL fontsConfigurationURL = new URL("file:///path/to/my/fontsConfig.xml");
engineConfig.setFontConfig(fontsConfigurationURL);
Platform.startup(engineConfig);
Auf diese Weise können Sie BIRT mit einer angepassten Version von fontsConfig.xml versorgen, ohne Stochern in den JAR-Dateien.
Getestet mit BIRT 4.3.0.
Andere Tipps
Es gibt einen Weg Schriftart auf einem relativen Pfad zu haben, um in Birt verwendet werden.
Was Sie tun müssen, um die Schriften zu einer Stelle in Ihrer Web Application kopieren. Meins war in: C: \\ src \ main \ webapp \ Berichte
Jetzt in der Anwendung, verwenden Sie den folgenden Befehl, um die Schriften der oben genannten Position zu registrieren.
FontFactory.registerDirectory( scContext.getRealPath("/Reports") );
Dies wird die Schriftart registrieren.
Getestet auf Birt 4.3 bis Spring MVC