はじめに

PHPでHTMLからPDFに変換するというといくつか選択肢があるが、今回は Headless Chromeを使用しているライブラリを使って実践してみる。

環境

1
2
3
4
Docker Desktop 4.23.0 (120376)
nginx 1.25.2
php 8.2
composer 2.6.3

使用するライブラリ

下記を使用する
https://github.com/spiritix/php-chrome-html2pdf

その他のライブラリ  

mPDF, TCPDFは HTMLからPDFにするには適用できるCSSが少ないため除外した。
Snappyに関しては、wkhtmltopdfに依存しているため除外した。
wkhtmltopdfはEOLとなっているため、使用しない。
chrome-php/chromeについては、Headless chromeとして使えるので、期待した動作になるが、今回はコード量を少なくしたかったので使用しなかった。

構築

下記リポジトリを使用する。
https://github.com/katsuobushiFPGA/html-to-pdf-php-example

1
git clone https://github.com/katsuobushiFPGA/html-to-pdf-php-example.git

その後、構築を行う。

1
docker compose up -d

動作確認

dockerが立ち上がったら、http://localhost:8000にアクセスする。

index.phpでは、PDFをページに埋め込む形にしているので下記の表示となる。
コミットしたコードでは、 ニコニコ動画のページが表示されるが、今回はYahooの天気情報にした。   convert-html-to-pdf

参考

おわりに

wkhtmltopdfの代替を探していた中で上記のライブラリに出会ったので、PDFの完成度に感動した。
Headless ChromeでPDFを生成するのがベストなのかな〜。
PDF系のライブラリは難しいな。