勉強したことのメモ

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

TCPDFで「unable to read file: helvetica.json」エラーの対応方法

  PHP

TCPDF&FPDIでテンプレートPDFに動的に文字等を追記するプログラムがサーバ移行後に「Fatal error: Uncaught Com\Tecnick\Pdf\Font\Exception: unable to read file: helvetica.json」というエラーになった。以下に対応方法をメモ。

 

原因

旧環境はTCPDFのバージョンが6系で新環境では7系となっており、7系の場合はフォントを自動生成するステップが必要になった。その際に生成される筈のhelvetica.jsonが見つからずエラーになったっぽい。

 

対応方法

ライブラリの再インストールとフォント生成

サーバにSSH接続して以下を行う。

# TCPDFと依存しているすべての関連パッケージを最新の状態に更新
podman exec -w /var/www/html/test.com 【コンテナ名】 composer update tecnickcom/tcpdf --with-all-dependencies

# フォントを生成
podman exec -w /var/www/html/test.com/vendor/tecnickcom/tc-lib-pdf-font 【コンテナ名】 make fonts

フォントを生成することで「unable to read file: helvetica.json」エラーが改善されるため、TCPDF単体で使う場合はこれで問題ない筈。

TCPDFバージョンダウン

「unable to read file: helvetica.json」エラーは改善されたが、次に以下のようなエラーが発生した。

Fatal error: Uncaught Error: Call to undefined method setasign\Fpdi\Tcpdf\Fpdi::setPageFormat() in /vendor/setasign/fpdi/src/FpdiTrait.php:471

どうもTCPDF7系は正式にはFPDIに対応していないっぽく、TCPDFのバージョンを元に戻すことで改善された。

具体的には「composer.json」内のTCPDFを「 "tecnickcom/tcpdf": "^6.5"」に指定し、以下で再インストールする。

podman exec -w /var/www/html/test.com 【コンテナ名】 composer update tecnickcom/tcpdf --with-all-dependencies

以上でエラーが改善され、正常に動作するようになった。

 - PHP

  関連記事

PHPでパスワード付きのZIP / PDFファイルを作成する方法
PHPでパスワード付きのZIP / PDFファイルを作成する方法

PHPでZIPファイル化する方法やPDFファイル出力する方法を過去に書いたが、何 ...

JavaScriptにて領収書等のテンプレートHTMLページをPDFファイル化させる方法(html2pdf)
JavaScriptにて領収書等のテンプレートHTMLページをPDFファイル化させる方法(html2pdf)

JavaScriptにてhtml2pdfというライブラリを使用することでHTML ...

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」を使っているページがエラーログにのってお ...

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

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