J'ai 3 tableaux ($PSA, $NP et $OP) que j'utilise pour générer un PDF. La fonction que j'utilise pour générer le PDF est donnée ci-dessous. Le problème est que toutes les valeurs des tableaux ne peuvent pas être contenues dans une seule page, donc il est nécessaire d'ajouter des sauts de page, mais lorsque j'essaie de définir SetAutoPageBreak à TRUE, le PDF échoue à se charger. Lorsqu'il est défini sur False (comme dans la méthode), je n'obtiens que la première page de valeurs (le reste est coupé). Y a-t-il un moyen de définir manuellement des sauts de page? Je pourrais utiliser une condition comme :if($pdf->getPageHeight()-$GetY() < 5) ajouter un saut de page;
mais je ne suis pas sûr où mettre le code (je devrais vérifier la condition avant que chaque ligne ne soit affichée ??) Merci!
function generate_pvr($PSA, $NP, $OP, $FROM, $TO){
$heading = 'Test [ De: '.$FROM.' À: '.$TO.' ]';
$border = 0;
$pdf = new TTPDF('P','mm','A4');
$pdf->setMargins(0,0);
$pdf->SetAutoPageBreak(FALSE);
$pdf->AddPage();
$adjust_x = 0;
$adjust_y = 0;
//En-tête
$pdf->SetFont('','B',12);
$pdf->setXY( Misc::AdjustXY(30, $adjust_x), Misc::AdjustXY(20, $adjust_y) );
$pdf->Cell(30,15,$heading, $border, 0);
$block_adjust_y = 45;
$block_adjust_x = 40;
//Entrées PSA
foreach( $PSA as $key=>$value ) {
$block_adjust_y = $block_adjust_y + 5;
$pdf->setXY( Misc::AdjustXY($block_adjust_x, $adjust_x), Misc::AdjustXY($block_adjust_y, $adjust_y) );
$pdf->SetFont('','B',12);
$pdf->Cell(45,5, $key, $border, 0, 'L');
$pdf->setXY( Misc::AdjustXY($block_adjust_x + 20, $adjust_x), Misc::AdjustXY($block_adjust_y + 10, $adjust_y) );
$pdf->SetFont('','I',10);
$pdf->Cell(45,5, 'Emp#', $border, 0, 'L');
$pdf->Cell(45,5, 'Nom de l'employé', $border, 0, 'L');
$pdf->Cell(45,5, 'Montant', $border, 0, 'R');
$block_adjust_y = $block_adjust_y + 15;
foreach ($value as $key2=>$value2){
$pdf->setXY( Misc::AdjustXY($block_adjust_x+20, $adjust_x), Misc::AdjustXY($block_adjust_y + 5, $adjust_y) );
$pdf->SetFont('','',10);
$pdf->Cell(45,5, $value2['emp_num'], $border, 0, 'L');
$pdf->Cell(45,5, $value2['user_name'], $border, 0, 'L');
$pdf->Cell(45,5, TTi18n::formatNumber( $value2['amount'] ), $border, 0, 'R');
$sumpsa = $sumpsa + $value2['amount'];
$block_adjust_y = $block_adjust_y + 5;
}
$pdf->setXY( Misc::AdjustXY($block_adjust_x+20, $adjust_x), Misc::AdjustXY($block_adjust_y + 5, $adjust_y) );
$pdf->SetFont('','B',10);
$pdf->Cell(90,5, 'Total', $border, 0, 'C');
$pdf->Cell(45,5, TTi18n::formatNumber( $sumpsa ), $border, 0, 'R');
$sumpsa = 0;
$block_adjust_y = $block_adjust_y + 10;
}
//Entrées NP
$pdf->setXY( Misc::AdjustXY($block_adjust_x, $adjust_x), Misc::AdjustXY($block_adjust_y + 5, $adjust_y) );
$pdf->SetFont('','B',12);
$pdf->Cell(45,5, 'NP', $border, 0, 'L');
$pdf->setXY( Misc::AdjustXY($block_adjust_x + 20, $adjust_x), Misc::AdjustXY($block_adjust_y + 15, $adjust_y) );
$pdf->SetFont('','I',10);
$pdf->Cell(45,5, 'Emp#', $border, 0, 'L');
$pdf->Cell(45,5, 'Nom de l'employé', $border, 0, 'L');
$pdf->Cell(45,5, 'Montant', $border, 0, 'R');
$block_adjust_y = $block_adjust_y + 15;
foreach ($NP as $keynp => $valuenp){
$pdf->setXY( Misc::AdjustXY($block_adjust_x+20, $adjust_x), Misc::AdjustXY($block_adjust_y + 10, $adjust_y) );
$pdf->SetFont('','',10);
$pdf->Cell(45,5, $valuenp['employee_number'], $border, 0, 'L');
$pdf->Cell(45,5, $valuenp['user_name'], $border, 0, 'L');
$pdf->Cell(45,5, TTi18n::formatNumber( $valuenp['amount'] ), $border, 0, 'R');
$sum_nopay = $sum_nopay + $valuenp['amount'];
$block_adjust_y = $block_adjust_y + 5;
}
$pdf->setXY( Misc::AdjustXY($block_adjust_x+20, $adjust_x), Misc::AdjustXY($block_adjust_y + 10, $adjust_y) );
$pdf->SetFont('','B',10);
$pdf->Cell(90,5, 'Variation Total', $border, 0, 'C');
$pdf->Cell(45,5, TTi18n::formatNumber( $sum_nopay ), $border, 0, 'R');
$sum_nopay = 0;
$block_adjust_y = $block_adjust_y + 10;
//Entrées OP
$pdf->setXY( Misc::AdjustXY($block_adjust_x, $adjust_x), Misc::AdjustXY($block_adjust_y + 5, $adjust_y) );
$pdf->SetFont('','B',12);
$pdf->Cell(45,5, 'Surpayé', $border, 0, 'L');
$pdf->setXY( Misc::AdjustXY($block_adjust_x + 20, $adjust_x), Misc::AdjustXY($block_adjust_y + 15, $adjust_y) );
$pdf->SetFont('','I',10);
$pdf->Cell(45,5, 'Emp#', $border, 0, 'L');
$pdf->Cell(45,5, 'Nom de l'employé', $border, 0, 'L');
$pdf->Cell(45,5, 'Montant', $border, 0, 'R');
$block_adjust_y = $block_adjust_y + 15;
foreach ($OP as $keyop => $valueop){
$pdf->setXY( Misc::AdjustXY($block_adjust_x+20, $adjust_x), Misc::AdjustXY($block_adjust_y + 10, $adjust_y) );
$pdf->SetFont('','',10);
$pdf->Cell(45,5, $valueop['employee_number'], $border, 0, 'L');
$pdf->Cell(45,5, $valueop['user_name'], $border, 0, 'L');
$pdf->Cell(45,5, TTi18n::formatNumber( $valueop['amount'] ), $border, 0, 'R');
$sum_overpay = $sum_overpay + $valueop['amount'];
$block_adjust_y = $block_adjust_y + 5;
}
$pdf->setXY( Misc::AdjustXY($block_adjust_x+20, $adjust_x), Misc::AdjustXY($block_adjust_y + 10, $adjust_y) );
$pdf->SetFont('','B',10);
$pdf->Cell(90,5, 'Variation Total', $border, 0, 'C');
$pdf->Cell(45,5, TTi18n::formatNumber( $sum_overpay ), $border, 0, 'R');
$sum_overpay = 0;
$block_adjust_y = $block_adjust_y + 10;
return $pdf->Output('','S');
}