問題の概要
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.utf8 や ja_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"
エクスポート結果を再度生成し、文字化けや記号の誤変換が解消されていることを確認する。
補足:クラスタ環境での注意点
複数ノードで構成されるクラスタ環境では、すべてのノードに対して同様のフォントおよび言語パッケージのインストールが必要である。