BIRT:pdfエミッター、相対パスまたはjarファイルからのフォントのロード/使用
質問
私は初期の頃からBIRTを使用していますが、PDFエミッタに関してはまだ謎があります。
短編小説: fontsConfig.xmlを設定して、相対パスまたはjarからフォントをロードできますか?
長編: WebアプリケーションでPDFを生成するためにFOPとBIRTの両方を使用しています。ライブラリ間でフォントを共有するとよいでしょう。残念ながら、BIRT 2.3.1でそれを行う方法が見つかりません
悪の根源はfontsConfig.xmlです 以下に示すように設定すると、正常に動作します。
<font-paths>
<path path="fonts"/>
</font-paths>
しかし、パスはクラスパスではなく相対パスを使用することを許可しません(または適切な設定方法が見つかりません)。 config1もconfig2も機能しません。
Config1:
<font-paths>
<path path="../fonts"/>
</font-paths>
Config2:
<font-paths>
<path path="classpath:fonts"/>
</font-paths>
ご意見をいただければ幸いです。
解決
一部のBIRTバージョンでは、SystemProperty&quot; birt.font.dirs&quot;を使用できます。これはfontsConfig.xmlを上書きします。
まあ、これはかつては機能しましたが、明らかにBIRTソースコードから後で削除されました。
次のように呼び出すことができます
EngineConfig engineConfig = new EngineConfig();
URL fontsConfigurationURL = new URL("file:///path/to/my/fontsConfig.xml");
engineConfig.setFontConfig(fontsConfigurationURL);
Platform.startup(engineConfig);
これにより、BIRTにJARをいじることなく、fontsConfig.xmlのカスタマイズされたバージョンを提供できます。
BIRT 4.3.0でテスト済み。
他のヒント
Birtで使用される相対パスにフォントを設定する方法があります。
必要なことは、フォントをWebアプリケーションの場所にコピーすることです。私がいた: C:\\ src \ main \ webapp \ Reports
アプリケーションで、次のコマンドを使用して、上記の場所からフォントを登録します。
FontFactory.registerDirectory( scContext.getRealPath("/Reports") );
これによりフォントが登録されます。
Birt 4.3でSpring MVCを介してテスト済み