mPDFで複数言語を使う方法

PHPでサービスを作っていると日本語だけでなく、韓国語も合わせて使いたい!というケースがあります。
WEB出力だけなら簡単なのですが、いざPDF出力しようとすると、とたんに□文字(豆腐というらしい)となってしまいます。

ググってもなかなか出てこず苦戦しましたが、なんとかできましたので、まとめておきます。

前提条件
CakePHP3系を利用し、composer.jsonには、以下のように設定します

"require": {
"mpdf/mpdf": "^6.1",
"friendsofcake/cakepdf": "^3.2"
}

まずは、設定ファイルに直もしくは、別のconfigファイルを用意してフォントを追加指定します。

$fontdata = [
'ipagothic'=> [
'R' => 'ipag.ttf',
],
'nanumbarungothic' => [
'R' => 'NanumBarunGothic.ttf',
],
];

フォントを特定のフォルダに入れて、そのフォルダを_MPDF_SYSTEM_TTFONTSという名前でDefineします

define('_MPDF_SYSTEM_TTFONTS', "/var/data/fonts/");

あとは、HTMLをどうするか?となりますが、今回はHTMLとして作成し、それをPDFとする形をとりました。
HTMLのCSSとして以下のように指定します

body {
font-family : ipagothic;
}
.lang-kr {
font-family : nanumbarungothic;
}

HTMLとしては、こんな感じ

<span class="lang-kr">ハングル文字</span>
<span>普通文字</span>

これでOK。無事に多国語を対応させることができました。
よくWEB上には、mpdfの中身を直接弄ったりするような話がありますが、composerを使う以上、よろしくありませんね。

コメント

タイトルとURLをコピーしました