解決したい事項
PHPのPDF出力ライブラリ「mPDF」を使ってPDFを生成した際に、「日本語が□になる」といった文字化けの問題に直面しました!
この記事では、'mode' => 'ja'
を設定していても文字化けしてしまう原因と、IPAフォントを使って日本語を正しく表示する方法を紹介します。
❓ なぜ文字化けが起きるのか?
mPDFは多言語対応のPDFライブラリですが、日本語のフォントを内蔵していないことが多いため、明示的にフォントを指定しないと日本語が文字化けします。
補足ですが、今回は「□」に文字化けしてしまいましたが、「直」「角」などの表示が日本語の表示と異なる文字で出力されることもあるみたいです。
📄 文字化けした例
以下は、mPDFで日本語を表示しようとしたが、フォント設定がされておらず文字化けしてしまった例です。

✅ 解決策:IPAフォントを導入して設定する
文字化けを解消するには、日本語対応のフォントを読み込むようにmPDFを設定する必要があります。
1. IPAから日本語のフォントをダウンロード
IPA公式サイトから 日本語のフォントファイルのipaexg.ttf
をダウンロードできます。
2. プロジェクトにフォントを配置
例:以下のような構成で配置します。
※プロジェクトに合わせたパスにしてください。
your_project/
└── resources/
└── font-mpdf/
└── ipaexg.ttf
3. mPDFの設定を変更
以下のように、mPDFにフォントの場所とデータを明示的に指定します。
※プロジェクトに合わせたパスにしてください。
$mpdf = new \Mpdf\Mpdf([
'mode' => 'ja',
'fontDir' => [YOUR_APP_ROOT . '/resources/font-mpdf'],
'fontdata' => [
'ipa' => ['R' => 'ipaexg.ttf'],
],
'default_font' => 'ipa',
]);
🎉 解決後の出力結果
フォント設定を追加することで、日本語が正しく表示されるようになりました!
📝 結言
もし、同じ状況が発生した際の解決にこの記事が役立てば幸いです!