書き置き。

ほぼ勉強の記録みたいなもんです。

PHP4&PHP5でPDFを作成したいときに

PHPでPDF作成の定番といえば、FPDFPDFlibなんかがありますが、 さらにその上を行くライブラリがありました。

TCPDF

PHPSpotのblogではこんな風に紹介されていました。 PHPでPDFファイルを作成するFPDFの進化版『TCPDF』。

デフォルトでUnicode(UTF-8)が使えたり、次のような特徴があります。

  • PDF作成テキストにHTML( h1, h2, h3, h4, h5, h6, b, u, i, a, img, p, br, strong, em, font, blockquote, li, ul, ol, hr, td, th, tr, table, sup, sub, small )タグが使用できる
  • バーコードが作成できる
  • フォントは、TrueTypeUnicode, TrueType, Type1 をサポート
  • ページのフォーマットが利用できる(マージン等)
  • 自動改ページが可能
  • JPEG/PNG画像が使える
  • HTMLが使えるというのが大きくて、次のようなPDFが簡単に作れます。
  • (ダウンロードパッケージに含まれるサンプルを元に作成したPDF)

今回はPHP4.3系が入っているテストサーバーでサンプル作成をしてみました。 当初はFPDFを使う予定が、FPDFのクラスをnewした時点で、 this version of PHP is not suported. と、悲しいことを言われてしまったのです。 結構探したつもりなのですが、必要環境(PHPのバージョン等)の詳細が不明のまま。

FPDFの進化版『TCPDF』と紹介されていたTCPDFを試してみました。 PHP4なので tcpdf_php4 TCPDF 4.3.005_PHP4 released (Tue, 25 Nov 2008 15:44:26 GMT) こちらをダウンロード。

一式サーバーにアップロードして、sampleフォルダに入っているsampleを開いてみると (何事もなく)PHPで生成されたPDFが表示されました。

日本語を使いたいときには日本語の使えるフォントを指定してやらなければなりません。

$pdf->SetFont('kozgopromedium',null,8);

こちらのサイトを参考にしました。 TCPDFに関するリファレンス・ドキュメント

サンプルでは$pdf->Cell()が多用されていましたが、帳票印刷をするときなどはこちらの方が便利。

$pdf->Text(左からの距離,上からの距離,"出力したい文字列");

ちなみに$pdf->Text();に長いテキストを渡すと、自動改行してくれずに1行で表示(表示しきれなくて切れる)

してしまいます。

$pdf->WriteHTML(テキスト);

こちらを使うと、ページ幅で改行してくれる様です。

メソッド名がWriteHTMLなので、HTMLタグも使用可なんでしょう、きっと。

ここらへんはこれから要調査、です。