Linux環境での帆軟レポート出力時の文字化け対応

問題の概要

Linuxサーバ上で帆軟(FineReport)を使用してレポートをエクスポートまたは印刷すると、以下の現象が発生することがある:

  • プレビューでは正常に表示されるが、PDFやExcelへのエクスポート時に文字化けする。
  • 「¥」記号が「$」に置き換わる。
  • チャートの凡例(日本語)が消失する。
  • 斜線や装飾要素が四角枠で表示される。

原因の分析

帆軟のエクスポート・印刷処理はサーバ側で実行されるため、使用するフォントはLinuxサーバ上のJava実行環境(JRE)およびOSが認識しているフォントに依存する。Windowsクライアントでデザインされたテンプレートに含まれるフォント(例:MS ゴシック、Meiryo、SimHeiなど)がLinuxに存在しない場合、代替フォントが使われたり、描画不能により文字化けや記号の誤変換が発生する。

特に、日本語や中国語などの非ASCII文字を含む場合、OSレベルでの言語パックとフォントの両方が必要となる。

解決手順

1. 中文(または日本語)言語環境の確認・設定

まずはシステムロケールがUTF-8ベースの中文/日本語に対応しているか確認する(CentOS/RHEL系を例に):

locale -a | grep -E "(zh_CN|ja_JP)"

出力に zh_CN.utf8ja_JP.utf8 がなければインストール:

yum install glibc-langpack-zh glibc-langpack-ja

永続的にロケールを設定:

localectl set-locale LANG=zh_CN.UTF-8
# または ja_JP.UTF-8(用途に応じて選択)

再起動後に反映される。

2. 必要なフォントのインストール

Windowsから必要なTrueTypeフォント(例:MSYH.TTF、SIMHEI.TTF)を取得し、Linuxサーバに配置:

# フォント格納ディレクトリ作成
sudo mkdir -p /usr/share/fonts/custom

# フォントファイルをアップロード(例:scp, rzなど)
# ここでは msyh.ttf を配置した前提

# 権限設定
sudo chmod -R 755 /usr/share/fonts/custom

# フォントキャッシュ更新
cd /usr/share/fonts/custom
sudo mkfontscale
sudo mkfontdir
sudo fc-cache -fv

コマンドが存在しない場合は事前にインストール:

sudo yum install -y fontconfig mkfontscale

3. Java/JREフォントパスへの追加(オプション)

一部の環境では、JRE組み込みフォントディレクトリにもコピーが必要な場合がある:

cp /usr/share/fonts/custom/msyh.ttf $JAVA_HOME/jre/lib/fonts/
# または fallback ディレクトリを作成して配置
mkdir -p $JAVA_HOME/jre/lib/fonts/fallback
cp /usr/share/fonts/custom/*.ttf $JAVA_HOME/jre/lib/fonts/fallback/

4. サービスの再起動

フォント変更を反映させるため、帆軟レポートサーバ(Tomcatなど)を再起動:

systemctl restart tomcat
# または帆軟専用の起動スクリプトを使用

5. 確認方法

インストールされたフォントを検索:

fc-list :lang=zh | grep -i "microsoft\|simhei"
fc-list :lang=ja | grep -i "meiryo\|ms gothic"

エクスポート結果を再度生成し、文字化けや記号の誤変換が解消されていることを確認する。

補足:クラスタ環境での注意点

複数ノードで構成されるクラスタ環境では、すべてのノードに対して同様のフォントおよび言語パッケージのインストールが必要である。

タグ: FineReport linux フォント 文字化け Java

7月31日 22:36 投稿