TCPDFで「unable to read file: helvetica.json」エラーの対応方法
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でパスワード付きのZIP / PDFファイルを作成する方法
PHPでZIPファイル化する方法やPDFファイル出力する方法を過去に書いたが、何 ...
-
-
JavaScriptにて領収書等のテンプレートHTMLページをPDFファイル化させる方法(html2pdf)
JavaScriptにてhtml2pdfというライブラリを使用することでHTML ...
-
-
TCPDF「Could not include font definition」エラーの対処方法
TCPDFでフォントを「arialunicid0」に指定したところ「TCPDF ...
-
-
mpdfで「The /e modifier is …」エラー発生時の対応方法
pdf関連のPHPライブラリ「mPDF」を使っているページがエラーログにのってお ...
-
-
HTML / CSSで作成したコンテンツをPDFファイルで出力する方法(TCPDF)
HTML / CSSで作成したコンテンツをPDFファイルで出力させたい。以前mp ...