PHP : Tcpdf – Variable Height Table Rows With MultiCell
$dimensions = $pdf->getPageDimensions();
$hasBorder = false; //flag for fringe case
foreach($data as $row) {
$rowcount = 0;
//work out the number of lines required
$rowcount = max($pdf->getNumLines($row['cell1data'], 80),$pdf->getNumLines($row['cell2data'], 80),$pdf->getNumLines($row['cell3data'], 80));
$startY = $pdf->GetY();
if (($startY + $rowcount * 6) + $dimensions['bm'] > ($dimensions['hk'])) {
//this row will cause a page break, draw the bottom border on previous row and give this a top border
//we could force a page break and rewrite grid headings here
if ($hasborder) {
$hasborder = false;
} else {
$pdf->Cell(240,0,'','T'); //draw bottom border on previous row
$pdf->Ln();
}
$borders = 'LTR';
} elseif ((ceil($startY) + $rowcount * 6) + $dimensions['bm'] == floor($dimensions['hk'])) {
//fringe case where this cell will just reach the page break
//draw the cell with a bottom border as we cannot draw it otherwise
$borders = 'LRB';
$hasborder = true; //stops the attempt to draw the bottom border on the next row
} else {
//normal cell
$borders = 'LR';
}
//now draw it
$pdf->MultiCell(80,$rowcount * 6,$row['cell1data'],$borders,'L',0,0);
$pdf->MultiCell(80,$rowcount * 6,$row['cell2data'],$borders,'L',0,0);
$pdf->MultiCell(80,$rowcount * 6,$row['cell3data'],$borders,'L',0,0);
$pdf->Ln();
}
$pdf->Cell(240,0,'','T'); //last bottom border

Processing your request, Please wait....
No Responses to “PHP : Tcpdf – Variable Height Table Rows With MultiCell”
Comments (Your Comments)
Leave a Reply