我使用mPDF生成PDF并向客户发送报告。
我正在使用这个foreach填充我的表格行
$report_nr = $this->input->post('report_nr');
$date = $this->input->post('date');
$owner = $this->input->post('owner');
$ar1 = $this->input->post('column01');
$ar2 = $this->input->post('column02');
$ar3 = $this->input->post('column03');
$ar4 = $this->input->post('column04');
$ar5 = $this->input->post('column05');
$ar6 = $this->input->post('column06');
$ar7 = $this->input->post('column07');
$ar8 = $this->input->post('column08');
$ar9 = $this->input->post('column09');
$ar10 = $this->input->post('column10');
include('../mpdf.php');
$mpdf = new mPDF('', // mode - default ''
'A4', // format - A4, for example, default ''
0, // font size - default 0
'', // default font family
15, // margin_left
15, // margin right
16, // margin top
16, // margin bottom
9, // margin header
9, // margin footer
'P'); // L - landscape, P - portrait
//$this->customer_report();
$n=0; //start counting at 0, like array counters do.
foreach ($ar2 as $thing) { //for each value of $ar2
$bigar[$n][2] = $thing; //set $bigarray at $n at 1 to that part
$n++; //add one to $n, continue
}
$n=0; //repeat for array 3
foreach ($ar3 as $thing) {
$bigar[$n][3] = $thing; //now use the 2 value of the array
$n++;
}
$n=0; //repeat for array 4
foreach ($ar5 as $thing) {
$bigar[$n][5] = $thing; //now use the 2 value of the array
$n++;
}
$n=0; //start counting at 0, like array counters do.
foreach ($ar6 as $thing) { //for each value of $ar2
$bigar[$n][6] = $thing; //set $bigarray at $n at 1 to that part
$n++; //add one to $n, continue
}
$n=0; //repeat for array 3
foreach ($ar8 as $thing) {
$bigar[$n][8] = $thing; //now use the 2 value of the array
$n++;
}
$n=0; //repeat for array 4
foreach ($ar9 as $thing) {
$bigar[$n][9] = $thing; //now use the 2 value of the array
$n++;
}
$n=0; //repeat for array 1
foreach ($ar1 as $thing) {
$bigar[$n][1] = $thing; //now use the 2 value of the array
$n++;
}
$this->mpdf->WriteHTML("<table border='1'>");
$this->mpdf->WriteHTML('<thead><tr><th class="span1">Relatório Nº :</th><th> '.$report_nr.' </th><th>Data :</th><th> '.$date.' </th><th>Cliente :</th><th colspan="5"> '.$owner.' </th></tr></thead>');
$this->mpdf->WriteHTML("<tbody>");
$this->mpdf->WriteHTML("<tr>");
foreach ($bigar as $part) { //go through each chunk of the array
if($i%10 == 0 && $i != 0) {
$this->mpdf->WriteHTML("</tr>");
$this->mpdf->WriteHTML("<tr>");
}
$this->mpdf->WriteHTML("<td>");
$this->mpdf->WriteHTML("<table><tbody><tr><td> ".($part[2]+$part[3])." </td><td> ".($part[5]+$part[6])." </td><td> ".($part[8]+$part[9]).' </td></tr><tr><td colspan="3"> '.$part[1]." </td></tr></tbody></table>");
$this->mpdf->WriteHTML("</td>"); //now, like above, that part has [1], and [2]
$i++;
}
$this->mpdf->WriteHTML("</tr>");
$this->mpdf->WriteHTML("</tbody></table>");
你可以在最后一行看到...当我达到10个单元格时,它会创建另一行。 现在我需要最后一行才能获得10个单元格,即使阵列上没有内容,否则它不会创建完整的行,这最终会使我的表格变得混乱......
这是pdf的打印屏幕:
希望我清楚自己。
谢谢大家
答案 0 :(得分:0)
找到了一种方法,我希望与你分享。
}
$this->mpdf->WriteHTML('<table border="1">');
$this->mpdf->WriteHTML('<thead><tr><th>Relatório Nº :</th><th> '.$report_nr.' </th><th>Data :</th><th> '.$date.' </th><th>Cliente :</th><th colspan="5"> '.$owner.' </th></tr></thead>');
$this->mpdf->WriteHTML("<tbody>");
$this->mpdf->WriteHTML("<tr>");
foreach ($bigar as $part) { //go through each chunk of the array
if($i%10 == 0 && $i != 0) {
$this->mpdf->WriteHTML('</tr>');
$this->mpdf->WriteHTML('<tr>');
}
$this->mpdf->WriteHTML("<td>");
$this->mpdf->WriteHTML("<table border='1'><tbody><tr><td> ".($part[2]+$part[3])." </td><td> ".($part[5]+$part[6])." </td><td> ".($part[8]+$part[9]).' </td></tr><tr><td colspan="3"> '.$part[1]." </td></tr></tbody></table>");
$this->mpdf->WriteHTML("</td>"); //now, like above, that part has [1], and [2]
$i++;
}
$this->mpdf->WriteHTML('<td colspan="'.(10-($i%10)).'"></td></tr>');
$this->mpdf->WriteHTML("</tbody></table>");
//$bigar_removed = ereg_replace("0", "", $bigar);
//$this->mpdf->WriteHTML("".$bigar_removed."");
$this->mpdf->WriteHTML("<pagebreak>");
$this->mpdf->Output();
exit;
}
诀窍是找到一种方法知道最后在行中创建了哪个单元格号。
$this->mpdf->WriteHTML('<td colspan="'.(10-($i%10)).'"></td></tr>');
这样,我只是从10中减去了数字,这给我留下了与coldspan一起使用的数字,让行完成。
希望它对你有所帮助!!
谢谢大家