「VTable-TCPDF」は、フリーのPDF作成クラスライブラリ「TCPDF」を継承したクラスです。
TCPDFの機能はそのままに、レイアウト機能を強化しました。
VTableでは、「仮想テーブル」上のセルに文字を置くようにレイアウトを調整することができます。
「TCPDF」はHTMLに対応しているので、簡単な表ならば問題なく作成できます。
ただ、そのHTMLの解析は独自のロジックを使用しているため、valignやborderの指定が認識されなかったり、
入れ子テーブルになると出力がよくわからない動きをしたりします。
またCELL、MultiCellというメソッドを使用して枠付のセルを出力することができますが、命令を実行すると、書き出し座標が変更されてしまいます。
これではプログラムの記述が制限されてしまいます。
たとえば、ヘッダー列情報を先に書き出してから、各列情報を出力したい場合などの書き方ができません。
・VTableでは列の幅と行の高さを決め、仮想テーブルを作成します。
仮想テーブルには行番号、列番号を指定することで自由に情報を書き出すことができます。
・同じ位置に何度でも書き出すことができるため、読み仮名の出力、右寄せ、左寄せを混ぜて出力したりもできます。
右図の「田中太郎」セルの出力手順です。
①左寄せ指定をして「田中太郎」を出力
②フォントを小さくして、上詰め指定を行い、「たなかたろう」を出力
③右寄せ指定をして「㊞」を出力
<?php require_once('../tcpdf/vtable_tcpdf.php'); /* PDF オブジェクトを作成し、以降の処理で操作します */ $pdf = new VTABLE_TCPDF('L', PDF_UNIT, 'A6'); // $pdf->SetMargins(10,10); $pdf->setCellPaddings(1,0.5,1,0.5); //テーブルの標準値を設定する $pdf->defParams[VTABLE_TCPDF::PRM_FONT_FAMILY] = "kozgopromedium"; $pdf->defParams[VTABLE_TCPDF::PRM_FONT_SIZE] = 10; $pdf->defParams[VTABLE_TCPDF::PRM_ALIGN] = "L"; $pdf->defParams[VTABLE_TCPDF::PRM_VALIGN] = "M"; /* 1ページ目を準備します */ $pdf->AddPage(); $pdf->BeginTable(array(10,10,10),array(25,60)); $pdf->WriteCell(1,1,"氏名","L-R-T-B"); $pdf->WriteCell(2,1,"郵便番号","L-R-T-B"); $pdf->WriteCell(3,1,"住所","L-R-T-B"); $pdf->WriteCell(1,2,"田中太郎","L-R-T-B"); //① $pdf->WriteCell(1,2,"たなかたろう","L-R-T-B", array(VTABLE_TCPDF::PRM_VALIGN => "T",VTABLE_TCPDF::PRM_FONT_SIZE => 6 )); //② $pdf->WriteCell(1,2,"㊞","L-R-T-B",array(VTABLE_TCPDF::PRM_ALIGN => "R" )); //③ $pdf->WriteCell(2,2,"〒555-5555","L-R-T-B"); $pdf->WriteCell(3,2,"大阪市中央区○○町8-8","L-R-T-B"); $pdf->EndTable(); /* PDF を出力します */ $pdf->Output("sample.pdf", "I"); ?>