忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

PHP TCPDFの「Cellメソッド」を使ったテーブル表示(背景色あり)の方法について

今回は「Cellメソッド」を使って、配列データをテーブルの表として枠線と背景色を塗りながら、四角い領域に表示する方法について説明します。

「Cellメソッド」の説明は以下のページで行っていますので、詳しくはそちらを参照して下さい。

PHP PDF出力の方法について・矩形領域への文字列出力(Cellメソッド)


ここであらためて、Cell メソッドの引数について説明を記します。

// Cellメソッド
public function Cell($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=false, $link='', 
					  $stretch=0, $ignore_min_height=false, $calign='T', $valign='M')
// $w      : 矩形領域の幅、0であれば、右マージンまで自動的に拡張される。
// $h      : 矩形領域の縦幅(デフォルト:0)
// $txt    : 表示文字列(デフォルト:"")
// $border : 境界線表示(0:枠無し,1:枠有 または "LRTB"の文字列で「左右上下」を指定)
// $ln     : 出力後のカーソルの移動方法を指定
//           [0]: 右へ移動(既定)
//           [1]: 次の行へ移動
//           [2]: 下へ移動
// $align  : テキストの整列を指定
//           [L] or 空文字: 左揃え(既定)
//           [C]: 中央揃え
//           [R]: 右揃え
//           [J]: 両端揃え
// $fill   : 矩形領域の塗つぶし指定
//           [false] : 透明(既定)
//           [true]  : 塗つぶす
// $link   : 登録するリンク先のURL
// $stretch: テキストの伸縮(ストレッチ)モード:
//           [0] : なし
//           [1] : 必要に応じて水平伸縮
//           [2] : 水平伸縮
//           [3] : 必要に応じてスペース埋め
//           [4] : スペース埋め
// $ignore_min_height:「true」矩形領域の高さの最小値調整をしない
// $calign : 指定されたY座標に対するセルの配置
//           [T] : cell top
//           [C] : center
//           [B] : cell bottom
//           [A] : font top
//           [L] : font baseline
//           [D] : font bottom
// $valign : セルの中のテキストの垂直方向の配置
//           [T] : top
//           [M] : middle
//           [B] : bottom


今回はテーブルとして見える様に、境界線指定の「$border」と矩形領域の塗つぶし指定の「$fill」引数を指定します。




それでは Cell メソッドを使用したデータテーブルの表示の簡単な例を以下に記します。

Cell メソッドを使用したデータテーブルの表示

setLineStyle メソッドのスタイル指定連想配列は、ほぼ以下の様にしています。

<?php
require_once('../tcpdf/tcpdf.php');

// クラス生成
$pdf = new TCPDF();

// デフォルトで用意されている日本語フォント[小塚ゴシックPro M]
$strFont = "kozgopromedium";
// ヘッダ・フッタ出力設定(特にいらないが)
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
// 本文の日本語フォント[小塚ゴシックPro M]
$pdf->SetFont($strFont, "", 10);

// 新しいpdfページを追加
$pdf->AddPage();

$pdf->Write(0, '[Cell]関数でのテーブル表示テスト', '', false, '', true);

// 各色指定による[Cell]関数でのテーブル表示
$arrTableData = [
    ['A001', 'aaaa'  , 'a002', 'AAAAA'   ] ,
    ['B001', 'bbbb'  , 'b002', 'BBBBBBBB'] ,
    ['C001', 'cccccc', 'c002', 'CCCCCC'  ] ,
    ['D001', 'dddddd', 'd002', 'DDDDDDD' ] ,
];
// 各データのセル幅
$arrWidth = [40, 35, 40, 45];
// 各データの高さ
$intHeight = 6;


// 塗潰し色設定 : [Cell()]のfill指定に適用される
$pdf->setFillColor(224, 235, 255);
// テキスト色設定
$pdf->setTextColor(0);
// 線色設定 : [Cell()]のborder指定に適用される
$pdf->setDrawColor(0, 0, 255);
// 線の幅設定 : [Cell()]のborder指定に適用される
$pdf->setLineWidth(0.3);

// 現在のX座標取得
$x = $pdf->GetX();
// 各データのセル幅の合計値でセルの[Top]の枠線を引く(高さは「0」指定)
$pdf->Cell(array_sum($arrWidth), 0, '', 'T', 0);    // カーソルは右端指定
// カーソルのX座標指定
$pdf->SetX($x);

// 塗潰し指定(最初は塗潰し無し)
$fill = 0;
// データ配列からテーブル表示
foreach($arrTableData as $data) {
    // 各カラムは左右の枠線描画指定
	$pdf->Cell($arrWidth[0], $intHeight, $data[0], 'LR', 0, 'L', $fill);
	$pdf->Cell($arrWidth[1], $intHeight, $data[1], 'LR', 0, 'L', $fill);
	$pdf->Cell($arrWidth[2], $intHeight, $data[2], 'LR', 0, 'R', $fill);
	$pdf->Cell($arrWidth[3], $intHeight, $data[3], 'LR', 0, 'R', $fill);
	$pdf->Ln();
    // 塗潰し指定反転
	$fill = !$fill;
}
// 各データのセル幅の合計値でセルの[Top]の枠線を引く(高さは「0」指定)
$pdf->Cell(array_sum($arrWidth), 0, '', 'T');

// pdf表示設定
$pdf->Output('pdf-cells-color-1.pdf', 'I');
?>

これの実行結果は以下の通りです。


各データの縦の枠線は Cell メソッドの枠指定 'LR' で左右の枠を指定します。 また、各データの塗潰しの指定は truefalse が交互に指定される様にしています。
テーブルの上下の横線はテーブル全部の横幅の合計数に対して Cell メソッドで高さ「0」の枠のみを描画させています。
なお、塗潰し色・テキスト色・線の色は以下のメソッドで指定したものが適用されます。

関連する記事

PHP PDFファイル出力の方法について(TCPDF)
PHP TCPDF PDFのワークシートの処理について
PHP TCPDF PDFのワークシートのセルへのアクセスについて
PHP TCPDF PDFのワークシートのセルへのアクセスについて(行・列指定)
PHP TCPDF PDFのワークシートのセルへ漢字(全角文字)の設定について
PHP TCPDF PDFのワークシートの紙の大きさやページ設定について












PR

コメント

コメントを書く