TCPDFで日本語を表示させる方法

  • 2020.02.17
  • PHP
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/」ディレクトリに書き込み権限を付ける