忍者ブログ

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

関連する記事

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








PR

コメント

コメントを書く