TCPDFで日本語を表示させる方法
TCPDFを使用してPDF作成するときに、日本語の文字列が表示できなくて少し苦労をしたので、その対応方法を掲載します。
はじめのソース
// ライブラリ読み込み include "./TCPDF/tcpdf.php"; $tcpdf = new TCPDF("P", "mm", "A4", true, "UTF-8"); $tcpdf->setPrintHeader(false); $tcpdf->AddPage(); // 文字列出力 $tcpdf->Text(0, 15, "あいうえお"); // PDF生成 $tcpdf->Output("test.pdf", "I");
実行結果
日本語「あいうえお」が表示されない。
真っ白のPDFが表示されたのみ。
日本語フォントを指定して再実行
IAPフォントをダウンロードしてきました。
https://ipafont.ipa.go.jp/old/ipafont/download.html
以下のソースを追加する。
// フォントのインスタンス生成 $font = new TCPDF_FONTS(); // IPAのTTFを指定 $font_1 = $font->addTTFfont("/htdocs/ipafont/ipaexg.ttf"); $tcpdf->SetFont($font_1 , "", 32, "", true);
全ソース
// ライブラリ読み込み include "./TCPDF/tcpdf.php"; $tcpdf = new TCPDF("P", "mm", "A4", true, "UTF-8"); $tcpdf->setPrintHeader(false); $tcpdf->AddPage(); // フォントのインスタンス生成 $font = new TCPDF_FONTS(); // IPAのTTFを指定 $font_1 = $font->addTTFfont("/htdocs/ipafont/ipaexg.ttf"); $tcpdf->SetFont($font_1 , "", 32, "", true); // 文字列出力 $tcpdf->Text(0, 15, "あいうえお"); // PDF生成 $tcpdf->Output("test.pdf", "I");
実行結果
エラーメッセージが表示されてしまいました。
「/TCPDF/fonts/」に書き込み権限を付けないといけないらしいです。
Warning: fopen(file:///htdocs/TCPDF/fonts/ipaexg.z): failed to open stream: Permission denied in /htdocs/TCPDF/include/tcpdf_static.php on line 1821 Warning: fwrite() expects parameter 1 to be resource, boolean given in /htdocs/TCPDF/include/tcpdf_fonts.php on line 370 Warning: fclose() expects parameter 1 to be resource, boolean given in /htdocs/TCPDF/include/tcpdf_fonts.php on line 371 Warning: fopen(file:///htdocs/TCPDF/fonts/ipaexg.ctg.z): failed to open stream: Permission denied in /htdocs/TCPDF/include/tcpdf_static.php on line 1821 Warning: fwrite() expects parameter 1 to be resource, boolean given in /htdocs/TCPDF/include/tcpdf_fonts.php on line 889 Warning: fclose() expects parameter 1 to be resource, boolean given in /htdocs/TCPDF/include/tcpdf_fonts.php on line 890 Warning: fopen(file:///htdocs/TCPDF/fonts/ipaexg.php): failed to open stream: Permission denied in /htdocs/TCPDF/include/tcpdf_static.php on line 1821 Warning: fwrite() expects parameter 1 to be resource, boolean given in /htdocs/TCPDF/include/tcpdf_fonts.php on line 915 Warning: fclose() expects parameter 1 to be resource, boolean given in /htdocs/TCPDF/include/tcpdf_fonts.php on line 916 TCPDF ERROR: Could not include font definition file: ipaexg
書き込み権限を付けて再実行
「/TCPDF/fonts/」にApacheの書き込み権限を追加しました。
*パーミッションを「777」しても良いです。
実行結果
正しく表示できました。
/TCPDF/fonts/にファイルが追加されてました。
ipaexg.ctg.z
ipaexg.php
ipaexg.z
まとめ
TCPDFで日本語を表示されるためには、下記が必要ということがわかりました。
1.日本語フォントを指定する
2.「/TCPDF/fonts/」ディレクトリに書き込み権限を付ける
2.「/TCPDF/fonts/」ディレクトリに書き込み権限を付ける