2

DynamicJasper によって生成された PDF が想定どおりに表示されるようになりましたが、もう 1 つ問題があります。結果の PDF にアジア文字がまったく表示されません。他のキャラクターは問題なく動作します。文字列が JRDataSource に適切に配置されていることをデバッガーで確認できます。Jasper は実際にレポートで文字列の行を生成しますが、テキスト自体は完全に欠落しています。

アジアのテキスト要素で DynamicJasper を使用する場合に考慮すべき追加のエンコーディング設定はありますか?

アドバイスをありがとう

4

2 に答える 2

7

さて、これが問題を段階的に修正したものです:

1.) Arial Unicode MS フォント拡張 JAR をクラスパス (または他の同等の Unicode フォント) に追加します。「公式」のものはここにありますが、結局これを使用しまし。Maven を使用している場合は、次のmvnコマンド ラインと POM エントリを使用して、ファイルをクラスパスに追加できます。

mvn install:install-file -Dfile=DynamicJasper-arial-unicode-fonts-1.0.jar -DgroupId=ar.com.fdvs -DartifactId=DynamicJasper-arial-unicode-fonts -Dversion=1.0 -Dpackaging=jar
<dependency>
    <groupId>ar.com.fdvs</groupId>
    <artifactId>DynamicJasper-arial-unicode-fonts</artifactId>
    <version>1.0</version>
</dependency>

2.) spring-core と spring-beans がまだ存在しない場合は、プロジェクトに追加します。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>3.2.2.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>3.2.2.RELEASE</version>
</dependency>

3.) 「Identity-H」Jasper PDF エンコーディングを有効にします。

static {
    JRProperties.setProperty("net.sf.jasperreports.default.pdf.encoding", "Identity-H");
}

4.) Arial Unicode MSDynamicJasper フォントとして構成します (例: 行用):

// ...
final DynamicReportBuilder dynamicReportBuilder = new DynamicReportBuilder();
final Style style = new Style();
style.setFont(new Font(Font.MEDIUM, "Arial Unicode MS", false));
dynamicReportBuilder.setDefaultStyles(null, null, null, style);
// ...

それはいくつかの厄介ながらくたでした:-/ ...

于 2013-04-12T11:13:13.070 に答える