PHPでPDFを生成する

2006/04/10 | PDF関連

PHPからPDFを生成するのに有名なツールとしてPDFlibというライブラリがある。PDFlib単体ではPDFの生成をサポートし、オプションとしてPDIというツールがあり(他にもたくさんある)、これを使うと既存PDFを読み込んで、データを埋め込んだPDFを作成するといったことができる。これができると、帳票などはエクセルやワードで作成し、データの埋め込みのみPHPからできるので、簡単に帳票をデザインすることができる。しかしPDFlibは商用利用は有償で単体で73,500円、PDIを加えると147,000円となり敷居が高くなってしまう。
ではその他の選択肢は・・・、となるといくつか手法がある。自分が知っているだけで以下の3つ。
(1) Texでデータを作成し、PDFに変換
(2) PHPでJAVAモジュールを有効にし、JAVAの豊富なライブラリを使用する
(3) PHPからPDFを生成するライブラリを使用する

(1)は自分が昔使っていた手法。Texでフォーマットした文書ファイルをghostscript(だったっけ?)をつかってPDFに変換する。ただしこの手法を使うには少なくともTexに関する知識も必要になるし、サーバにコマンド群をインストール・設定する必要もでてくる。決して敷居が低いとはいえない。

(2)はアシアルが「PHPプログラマーズマガジン」を生成する場合などに使用している(らしい)。JAVAの豊富なライブラリが使えるのでPDF生成に限らず有効な手法だが、やはりJAVAの知識が必要になってくると思われるので敷居は低くないだろう。

結果として(3)が最も簡単な方法になる。多分、今日本で一番使われていると思われるのがFPDFといわれるライブラリ(FPDF-J)。もともとFPDF自体はマルチバイトに対応していないけれど、拡張クラスを使用してマルチバイトが使用できるようになっている。それらはFPDF本家で作られた「FPDF_japanese」とairwhile氏が作成した「MBFPDF」だ(ただし現在MBFPDFへのリンクが見つけられず広川さんのサイトから取得できる模様MBFPDF 1.0b)。

このカテゴリでは(3)の手法を使用して、PHPからPDFを生成する手法をメモしていくことにする。

カレンダー(テンプレートエンジン用)

2006/01/28 | PHPライブラリ

カレンダーを作成するためのclassは世にたくさんあるけれど、いずれもHTMLタグが内包されていて、テンプレートで使用するには向いているとは思えない。ということで書いてみたのがコレ。

class cubeCalendar {
 function getCalArray($thisMonth,$thisYear){
  $startYoubi=date(‘w’,mktime(0,0,0,$thisMonth,1,$thisYear));
  $lastD=date(‘d’,mktime(0,0,0,$thisMonth +1,0,$thisYear));
  $tmpDayArray=array();
  for($i=0;$i<$startYoubi;$i++){
   $tmpArray=array();
   $tmpArray[‘day’]=”;
   $tmpArray[‘today’]=’0′;
   $tmpDayArray[]=$tmpArray;
  }
  for($i=0;$i<$lastD;$i++){
   $tmpArray=array();
   $tmpArray[‘day’]=(string)($i+1);
   $tmpArray[‘today’]=((date(‘Y-n-j’)==date(‘Y-n-j’,mktime(0,0,0,$thisMonth,$i+1,$thisYear)))? ‘1’:’0′);
   $tmpDayArray[]=$tmpArray;
  }
  $tmpCount=count($tmpDayArray) % 7;
  for($i=0;$i<7-$tmpCount;$i++){
   $tmpArray=array();
   $tmpArray[‘day’]=”;
   $tmpArray[‘today’]=’0′;
   $tmpDayArray[]=$tmpArray;
  }
  
  return array_chunk($tmpDayArray,7);
 }
}


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net