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を使う以上、よろしくありませんね。
コメント