【PHP】Webで帳票を作成するのにPDF変換を利用する方法

システムで入力したデータを帳票として印刷したいという要望はどこにでもありますが、それを実現するための方法は様々です。

Google先生に聞いてみると有償のツールがいろいろと出てきます。
GUIで操作できるし、開発工数も削減できるので、トータルでみると買ったほうがいいかも。

以下はフリーで使い勝手のいいPDF作成・変換ツールがないものかと探したメモ。

環境はLinux(CentOS5.2) + Apache + PHP

名称 説明
FPDF 簡単にPHPからPDFを出力できるPHPのクラス。簡単なものならこれで十分。でも日本語対応が不十分らしい。UTF-8に対応していない。日本語対応するのは難しくない。
FPDIを使えば既存PDFの読み込みも可能に。
本家サイト日本語サイト
TCPDF FPDFを元に開発された。UTF-8に標準で対応。こっちも日本語対応が不十分らしい
FPDIを使えば既存PDFの読み込みも可能に。今ならFPDFよりこっちがおすすめ。
本家サイト日本語解説サイト
HTML2FPDF その名の通りHTMLをPDFに変換できる。サンプルを見る限りかなり便利そう。
中身はFPDFが動いていて、HTMLタグに合わせて位置を調整しているらしい。
本家サイトSorceforge
Apache FOP XMLからPDFに変換するためのJavaライブラリ。実行するためにはJavaの実行環境が必要。
詳しくはwikipediaを読む。
XML→XSL-FO→PDFという流れらしい。参考サイト
可能性は無限大。難易度も無限大。
PHPで利用する場合はXMLを作っておいて、コマンドラインで実行
本家サイト
OpenOffice.orgのPDF作成ツールを利用する OpenOffice.orgをサービスとして起動して、OpenOffice.orgのPDF変換機能を利用する方法。
PHPからはコマンドラインを実行する。
詳しくはここを参照。
レイアウトをMicrosoft Excel or OpenOffice.org Calcで作成して、データを特定のセルに挿入すれば、一番簡単に帳票ができる?
OOoSDK
実際にPHPとOpenOfficeを連携させているPunoというプロジェクトを見つけた。
PHP-Excel PHPでMicrosoft Office Excel 2007形式を操作できるライブラリ。マイクロソフトのオープンソースプロジェクトで作成されているので何となく安心できる。これにPDF出力機能がついているので、Excel作成→PDF変換で出力可能。
既存のExcelも読み込めるので、調べた限り最強の帳票作成ツールになりそう
ライセンスはLGPL
本家サイト
(2009/03/04 追記) 使ってみたときの記事を改訂したのでそっちを参考に
Zend_Pdf Zend Frameworkの一部。
PHP5以上。
UTF8対応で(フォントを用意すれば)日本語が使える。既存のドキュメントが読み込める。どれくらい使えるのか謎が多い。試してみたら追記予定。
ドキュメント
(2009/02/20 追記)MultiCellみたいな範囲を指定した出力ができないのが痛い。今後に期待。
PDFlib
PDI
フリーではないけど、いろいろ悩むよりさくっとお金だした方が安くなる場合もあるので一応メモ。
既存PDFを読み込んで適当な場所に文字を出力したりができる。サンプルコードも豊富。
ライセンスを購入しないとロゴが表示される。
公式HPPDFlib HOWTO

<2009/02/20 追記>
いろいろ試した結果、今のところフリーのツールを使うならTCPDF + FPDIの組み合わせが最強。

TCPDFは特に日本語化する必要もなく、デフォルトで日本語フォントも入っているので使いやすい。精力的に開発も行われているのでなんとなく安心。
速度面でも特に問題なし。
PDFのサイズもフォント埋め込みを切り替えることで調整可能(ver.4.5以降)。

FPDIでテンプレートを使えるようにすると、記述量も減るしコードが見やすい→メンテナンス性up+工数削減

PDFのテンプレートを作成するのはOpenOffice.orgでさくっと作れる。

バージョンの違いでFPDIが動かない場合はここの記事を参照。