BIRT: émetteur pdf, polices de chargement / utilisation à partir du chemin relatif ou des fichiers jar

StackOverflow https://stackoverflow.com/questions/255916

Question

J'utilise BIRT depuis le début et j'ai toujours des énigmes concernant l'émetteur PDF.

Petite histoire : Puis-je configurer fontsConfig.xml pour charger des polices à partir du chemin relatif ou des fichiers JAR?

Longue histoire: Nous utilisons à la fois FOP et BIRT pour générer des PDF dans notre application Web. Ce serait bien de partager des polices entre bibliothèques. Malheureusement, je ne trouve pas le moyen de le faire avec BIRT 2.3.1

La racine du mal est fontsConfig.xml Si je le configure comme indiqué ci-dessous, il fonctionne bien:

<font-paths>
<path path="fonts"/>
</font-paths>

Mais path ne me permet pas d’utiliser ni les chemins relatifs ni le classpath (ou je ne trouve pas de moyen approprié pour le configurer). Ni config1 ni config2 ne fonctionnent.

Config1:

<font-paths>
<path path="../fonts"/>
</font-paths>

Config2:

<font-paths>
<path path="classpath:fonts"/>
</font-paths>

Toute pensée sera appréciée.

Était-ce utile?

La solution

Avec certaines versions de BIRT, vous pouvez utiliser un SystemProperty "birt.font.dirs". Cela remplace le fichier fontsConfig.xml.

Bien, cela a déjà fonctionné, mais il a évidemment été supprimé du code source de BIRT plus tard.

Maintenant, vous pouvez appeler quelque chose comme

EngineConfig engineConfig = new EngineConfig();
URL fontsConfigurationURL = new URL("file:///path/to/my/fontsConfig.xml");
engineConfig.setFontConfig(fontsConfigurationURL);

Platform.startup(engineConfig);

Cela vous permet de fournir à BIRT une version personnalisée de fontsConfig.xml sans fouiller dans les fichiers JAR.

Testé avec BIRT 4.3.0.

Autres conseils

Il existe un moyen d'avoir des polices sur un chemin relatif à utiliser dans Birt.

Ce que vous devez faire est de copier les polices à un emplacement de votre application Web. Le mien était en: C: \\ src \ main \ webapp \ Rapports

Maintenant, dans l'application, utilisez la commande suivante pour enregistrer les polices à partir de l'emplacement mentionné ci-dessus.

FontFactory.registerDirectory( scContext.getRealPath("/Reports") );

Ceci enregistrera la police.

Testé sur Birt 4.3 à Spring MVC

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top