BIRT:pdfエミッター、相対パスまたはjarファイルからのフォントのロード/使用

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

質問

私は初期の頃から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を介してテスト済み

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top