勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

TCPDFに任意の日本語フォント(Noto Sans JP)を追加する方法

  PHP

TCPDFはデフォルトで6つの日本語フォントが用意されているっぽいが、それら以外のフォントを使用したいというケースが出るかもしれない。日本語フォントのランキングを見ると「Noto Sans JP」が1位となっているので、まずはこちらのフォントを追加してみたい。以下に対応方法をメモ。

 

事前準備

TCPDF等

TCPDF、FPDIの設置やテンプレートPDFの用意に関しては過去記事を参考。

フォント

以下Google FontsのNoto Sans JPページから「Noto_Sans_JP.zip」をダウンロードする。

https://fonts.google.com/noto/specimen/Noto+Sans+JP

また、当該zipファイルを展開し「NotoSansJP-VariableFont_wght.ttf」ファイルをサーバ上の「/tcpdf/tools」ディレクトリにアップロードしておく。

 

対応方法

フォント登録ツールでファイルの変換

前提として「/tcpdf/tools」ディレクトリ内にある「tcpdf_addfont.php」がフォント登録用ツールとなる。

サーバにSSH接続し以下コマンドを実行する。

php /dir/path/tcpdf/tools/tcpdf_addfont.php -i NotoSansJP-VariableFont_wght.ttf -o .

そうすると「/tcpdf/tools」ディレクトリ内に以下3ファイルが生成される筈。

  • notosansjpvariablefont_wght.z
  • notosansjpvariablefont_wght.php
  • notosansjpvariablefont_wght.ctg.z

上記3ファイルを「/tcpdf/fonts」ディレクトリに移動することでフォントの登録が完了する。

尚、エラーが発生し、ファイルが生成されない場合は以下辺りをチェックすること。

  • ディレクトリに書き込み権限があるか
  • 指定したフォント名に誤りが無いか

フォントの使用

以下で「Noto Sans JP」を使用できる。

$pdf->SetFont('notosansjpvariablefont_wght', '', 17);

 

その他

使用可能なフォントの形式について

TCPDFではTTF / OFT形式は使用可能でwoff / woff2はそのままだと使用不可とのこと。

woff / woff2の場合は以下のようなサービスで形式を変換する必要あり。

https://cloudconvert.com/woff-to-ttf

https://transfonter.org/

 - PHP

  関連記事

FPDIで「This PDF document probably uses~~」エラーの対処方法
FPDIで「This PDF document probably uses~~」エラーの対処方法

FPIDであるPDFを読み込ませようとすると「This PDF document ...

HTML / CSSで作成したコンテンツをPDFファイルで出力する方法(TCPDF)
HTML / CSSで作成したコンテンツをPDFファイルで出力する方法(TCPDF)

HTML / CSSで作成したコンテンツをPDFファイルで出力させたい。以前mp ...

PhpSpreadsheetで作成したエクセルファイルをPDFファイルに変換する方法
PhpSpreadsheetで作成したエクセルファイルをPDFファイルに変換する方法

以前にPhpSpreadsheetでフォーマット用のエクセルを読み込み、指定した ...

TCPDF「Could not include font definition」エラーの対処方法
TCPDF「Could not include font definition」エラーの対処方法

TCPDFでフォントを「arialunicid0」に指定したところ「TCPDF ...

mpdfで「The /e modifier is …」エラー発生時の対応方法
mpdfで「The /e modifier is …」エラー発生時の対応方法

pdf関連のPHPライブラリ「mPDF」を使っているページがエラーログにのってお ...