【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を読み込んで適当な場所に文字を出力したりができる。サンプルコードも豊富。 ライセンスを購入しないとロゴが表示される。 公式HP。PDFlib HOWTO |
<2009/02/20 追記>
いろいろ試した結果、今のところフリーのツールを使うならTCPDF + FPDIの組み合わせが最強。
TCPDFは特に日本語化する必要もなく、デフォルトで日本語フォントも入っているので使いやすい。精力的に開発も行われているのでなんとなく安心。
速度面でも特に問題なし。
PDFのサイズもフォント埋め込みを切り替えることで調整可能(ver.4.5以降)。
FPDIでテンプレートを使えるようにすると、記述量も減るしコードが見やすい→メンテナンス性up+工数削減
PDFのテンプレートを作成するのはOpenOffice.orgでさくっと作れる。
バージョンの違いでFPDIが動かない場合はここの記事を参照。