3 votes

Insérer un saut de page manuel dans un document pdf - PHP

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');
    }

3voto

rationalboss Points 4881

Utilisez le code suivant pour ajouter une page.

$pdf->AddPage();

Après avoir utilisé le code ci-dessus, les appels successifs à la classe FPDF seront rendus sur la nouvelle page.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X