PHPでPDF出力 7 (繰り返す行の処理)
7.繰り返す行の処理
下図のような明細内容を繰り返し出力する処理を追加した。
繰返し範囲の設定を「{$loop}」「{$&&}」を考えてみたが、図でA列が空いているので対応できるが、A列から始まっている場合には変数名が設定できなくなる。
そこで、「{$配列名[変数名]}」「$配列名[&&]」とした。
ジェネレーターの出力は、以下の仕様にした。
foreach ($this->_pdf_vars['loop'] as $key) {
$this->Cell(56,7, $key['hinmei'], 0, 0,'L',1,'',0,0,'T','M');
}
PHP側の変数代入は、Smartyのappend風にしてみた。
index.phpで、
$lpdata = array("hinmei"=>"パソコ","suuryo"=>"2","tanka"=>"65,000",
"tani"=>"台","kingaku"=>"143,000","bikou"=>"");
$pdf->append("loop",$lpdata);
$lpdata = array("hinmei"=>"パソコン","suuryo"=>"2","tanka"=>"65,000",
"tani"=>"台","kingaku"=>"143,000","bikou"=>"");
$pdf->append("loop",$lpdata);
代入編集クラスにメソッドを追加
public function append($array_var, $value = null) {
$this->_pdf_vars[$array_var][] = $value;
}
Excelの定義と出力結果は、
残念ながら、背景色が全ての行で同じになってしまった。
また、売上金額と内税がおかしいのて、index.phpでの代入の間違いである。
繰り返しは、1行間隔で変わると割り切り1行目と2行目の背景色を予め取得して、奇数偶数行で背景色を設定する仕様にした。
今度は、思い通りに出力された。
改ページは、TCPDFに「AddPage(用紙方向(P:縦 L:横)、用紙サイズ)」が用意されている。
ジェネレーターで次のように出力している。
public function newPage() {
//ページ追加
$this->AddPage('L','A4');
}
適宜、newPageを呼び出せば改ページとなる。
大分形が整ってきた。