PHPでPDF出力 7 (繰り返す行の処理)

7.繰り返す行の処理

 

下図のような明細内容を繰り返し出力する処理を追加した。

 Ecel明細出力

 繰返し範囲の設定を「{$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の定義と出力結果は、

pdf繰り返し行

 残念ながら、背景色が全ての行で同じになってしまった。

また、売上金額と内税がおかしいのて、index.phpでの代入の間違いである。

繰り返しは、1行間隔で変わると割り切り1行目と2行目の背景色を予め取得して、奇数偶数行で背景色を設定する仕様にした。

今度は、思い通りに出力された。

 f:id:sesjk:20200503144248p:plain

改ページは、TCPDFに「AddPage(用紙方向(P:縦 L:横)、用紙サイズ)」が用意されている。

ジェネレーターで次のように出力している。

public function newPage() {
//ページ追加
$this->AddPage('L','A4');

}

適宜、newPageを呼び出せば改ページとなる。

大分形が整ってきた。