TCPDFで日本語フォントを使う方法
- PHP
-
2025-11-15
PHPでPDFを生成するライブラリとして有名な TCPDF。
便利な反面「日本語フォントが文字化けする…」「どうやって日本語フォントを追加するの?」と悩む人も多いのではないでしょうか。
この記事では、Noto Sans JP を例に TCPDF へ日本語フォントを追加する手順を、初めての方でも迷わないように詳しく解説します。
TCPDF が日本語フォントをそのまま扱えない理由
TCPDFはデフォルトで日本語をサポートしておらず、Unicodeフォントを 「CIDフォント or TTF埋め込み」 として自分で追加する必要があります。
つまり、
- 日本語フォント(.ttf)をTCPDF専用形式に変換
- PHPから使用できるようにフォント情報を登録
- 生成した PDF にフォントをセット
という3ステップが必要になります。
事前準備:TCPDFにフォントを追加する方法は2つ
TCPDFの日本語対応には以下の2通りの方法があります。
| 方法 | 特徴 |
|---|---|
| ① CIDフォント(KozMinなど)を使う | 簡単。ファイルサイズが小さい。見た目が古め。 |
| ② 独自フォント(TTF)を埋め込む ← この記事で解説 | フリーフォント利用可。自由度高い。PDFサイズは大きくなる。 |
今回はニーズが多い Noto Sans JP の TTF を埋め込む方法 を扱います。
Noto Sans JP をダウンロードしよう
Google Fonts から取得できます。
- Noto Sans JP
https://fonts.google.com/noto/specimen/Noto+Sans+JP
ダウンロード後、以下の .ttf ファイルを用意します。
例:
NotoSansJP-Regular.ttf NotoSansJP-Bold.ttf
TCPDF のフォントユーティリティで変換する(最重要)
TCPDFには、TTFフォントをPDF用に変換するツール tcpdf_addfont.php が付属しています。
▼ コマンドで変換する方法
CLI が使える場合は、TCPDF の tools ディレクトリへ移動し以下を実行します。
php tcpdf_addfont.php -i /path/to/NotoSansJP-Regular.ttf php tcpdf_addfont.php -i /path/to/NotoSansJP-Bold.ttf
実行後、以下のファイルが生成されます:
NotoSansJP-Regular.phpNotoSansJP-Regular.zNotoSansJP-Bold.phpNotoSansJP-Bold.z
これらを tcpdf/fonts/ 配下に配置します。
▼ CLI が使えない(レンタルサーバ等)場合
- ブラウザで以下へアクセス
http://localhost/tcpdf/tools/tcpdf_addfont.php - 画面から TTF をアップロードして変換
PHP側でフォントを使うコード例(コピペでOK)
以下は Noto Sans JP をPDFに適用する最小コードです。
require_once('tcpdf/tcpdf.php');
$pdf = new TCPDF();
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Your Name');
$pdf->SetTitle('Japanese PDF Sample');
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->AddPage();
// ★ 追加したフォントを読み込む
$pdf->SetFont('notosansjp', '', 12);
// 日本語テスト
$html = <<<EOD
<h1>TCPDF 日本語テスト</h1>
<p>Noto Sans JP を使用した PDF 生成のサンプルです。</p>
<p>こんにちは、世界。</p>
EOD;
$pdf->writeHTML($html, true, false, true, false, '');
$pdf->Output('sample.pdf', 'I');
ポイント
SetFont('notosansjp', '', 12)
→ 変換時に生成される “内部フォント名” を設定。- HTMLモードでも日本語が崩れずに出力されます。
太字を使いたい場合
変換済みの Bold フォントを読み込むだけです。
$pdf->SetFont('notosansjp', 'B', 14);
B を指定すると、NotoSansJP-Bold.ttf が適用されます。
よくあるエラーと対処法
❌ 「TCPDF ERROR: Could not include font definition file」
→ fonts/ に .php と .z ファイルが正しく置かれていない
→ ファイル名の大文字小文字が一致していない
❌ 文字化けする
→ TTF が正しく変換されていない
→ 変換時のログに Warning が出ていないか確認
❌ PDF が異常に重い
→ TTF 埋め込み方式の宿命
→ ウェイトを1種類に絞ると軽くなる
→ CIDフォント方式への切り替えも検討
まとめ
TCPDFで日本語を扱うには TTF を追加する必要がある
今回は Noto Sans JP の追加手順を解説しました。
作業は大きく3ステップです。
- Noto Sans JP をダウンロード
- TCPDF の
tcpdf_addfont.phpで変換 SetFont()で読み込むだけ
一度設定すれば、以降は非常に快適に日本語 PDF が作れるようになります。




