カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

TCPDFで日本語フォントを使う方法

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 から取得できます。

ダウンロード後、以下の .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.php
  • NotoSansJP-Regular.z
  • NotoSansJP-Bold.php
  • NotoSansJP-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 が作れるようになります。

この記事がお役に立ちましたらシェアお願いします
10 views

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です