PHPでPDF生成する方法を調査
ユーザーが入力したデータを帳票にして送信する仕組みを作っているときの覚書。8年ぐらい前にも調査した続編。
有力候補たち
名称 | 説明 |
TCPDF 公式サイト | PHPライブラリ。 サンプルが充実していて使い方も簡単。迷ったらこれ。 |
wkhtmltopdf 公式サイト | WebKit HTML to PDF ウェブサイトをPDF化してくれるコマンドラインツール。 要インストールなため自サーバーが必要。 HTMLでレイアウトを生成しておけばPDFに変換できるので楽。プレビュー → ダウンロード時にコマンド実行するだけ。 PHPから利用するためのライブラリもある。 |
Google Drive (Google Sheets) 開発者向けサイト | Google Driveにスプレッドシートを作っておいて、 コピー → セルに値を挿入 → PDFに変換ダウンロード というアイデア。 エクセルにも変換できるし応用がきく。学習コストは高め。 他のサービスに依存するのでAPI仕様変更とかが恐い。容量制限もあるので注意。 |
Google Drive APIを試したいけど、API利用規約とかも考えるとリスクが高い。
TCPDFは何度も使っていて面白くないので、wkhtmltopdfを試してみる予定。
< 2017/02/07 追記 >
wkhtmltopdfを実装してみた感想。
PHPからwkhtmltopdfをexecで呼び出して、渡すURLも自分自身のPDF用HTMLを動的に生成するPHPアドレスにした。
wkhtmltopdfが一度に複数呼び出されると処理が追いつかずタイムアウトする。
これを安定運用するには
- wkhtmltopdfに渡すのは動的PHPではなくローカルのHTMLとして事前に出力しておく
- wkhtmltopdfを複数起動しないようにキュー管理する
- 自前で実装するのではなくて、URLからPDF作成サービスがあるのでそちらを利用する
- やっぱりTCPDFにする
帳票のフォーマットが決まっているなら、テンプレートを読み込んで流し込む方がいい。
今試そうと思っているアイデアはHTMLをテキストでデータベースに保存して、生成したPDFもBlob型でデータベースに保存する方法。
実行中かどうかはシェルコマンドで判定する。
HTML(PHP)で作成したのがそのままPDFに出来るのは本当に楽。開発も修正も。
< Related Posts >