自动分页FPDF

时间:2015-04-17 06:10:42

标签: php fpdf

这是我用来从数据中获取数据列表的代码。我使用a for each循环将所有数据放在屏幕上,因为它是从数据库中传出的可变数据。

现在我面临的问题是,当有38行数据时它会停止...我已经把SetAutoPageBreak(true,10);但它似乎没有用。

如果有人有可能的解决方案,我很乐意。

感谢正手:)

$pdf = new FPDF('P','mm','A4');
$pdf->addPage(); $pdf->SetFont('Arial','B',16); 
$pdf->SetMargins(10, 10); 
$pdf->SetAutoPageBreak(true, 10);


// De kop
$pdf->SetTextColor(0,0, 0);
$pdf->Text(10, 15, "Balansformulier", TRUE);
$pdf->Text(10, 25, "#", TRUE);
$pdf->Text(30, 25, "Naam", TRUE);
$pdf->Text(100, 25, "Waar", TRUE);
$pdf->Text(154, 25, "Aanwezig?", TRUE);


$pdf->SetFont('Arial','i',11);

// horizontale waardes voor de variabelen
$x1=30;
$x2=100;
$x3=160;

// veritcale waardes voor de variabelen
$y=30;
$y2=27;

// waardes voor de nummers
$xnummer=10;
$ynummer=30;
$nummer=0;

//Waardes voor de lijnen
$xlijn=10;
$ylijn=31;



for($i=0; $i<5; $i++){


    foreach($balans_lijst as $balans){

        $nummer++;

        $naam = $html_entities->html_ent($balans['naam']);
        $waar = $html_entities->html_ent($balans['waar']);


        $y = $y+7;
        $y2 = $y2+7;

        $ynummer = $ynummer+7;

        $ylijn = $ylijn+7;



        $pdf->SetXY($x1, $y);


        //Stukken erop zetten
        $pdf->Text($xnummer,$ynummer,"{$nummer}.",1,'L', TRUE);
        $pdf->Text($x1,$y,"{$naam}",1,'L', TRUE);
        $pdf->Text($x2,$y,"{$waar}",1,'L', TRUE);
        $pdf->Line($xlijn, $ylijn, 190, $ylijn);

        $pdf->Rect($x3, $y2, 3, 3);



    }
}

2 个答案:

答案 0 :(得分:1)

重置x y和$ pdf-&gt; AddPage();

(...)

//Stukken erop zetten
                if($nummer % 38 === 0){
                    // horizontale waardes voor de variabelen
                    $x1=30;
                    $x2=100;
                    $x3=160;

                    // veritcale waardes voor de variabelen
                    $y=30;
                    $y2=27;

                    // waardes voor de nummers
                    $xnummer=10;
                    $ynummer=30;

                    //Waardes voor de lijnen
                    $xlijn=10;
                    $ylijn=31;
                    $pdf->AddPage();
                }
$pdf->Text($xnummer,$ynummer,"{$nummer}.",1,'L', TRUE);
                $pdf->Text($x1,$y,"{$naam}",1,'L', TRUE);
                $pdf->Text($x2,$y,"{$waar}",1,'L', TRUE);
                $pdf->Line($xlijn, $ylijn, 190, $ylijn);

(...)

完整示例

$pdf = new \FPDF('P','mm','A4');
        $pdf->addPage(); $pdf->SetFont('Arial','B',16); 
        $pdf->SetMargins(10, 10); 
        $pdf->SetAutoPageBreak(true, 10);


        // De kop
        $pdf->SetTextColor(0,0, 0);
        $pdf->Text(10, 15, "Balansformulier", TRUE);
        $pdf->Text(10, 25, "#", TRUE);
        $pdf->Text(30, 25, "Naam", TRUE);
        $pdf->Text(100, 25, "Waar", TRUE);
        $pdf->Text(154, 25, "Aanwezig?", TRUE);


        $pdf->SetFont('Arial','i',11);

        // horizontale waardes voor de variabelen
        $x1=30;
        $x2=100;
        $x3=160;

        // veritcale waardes voor de variabelen
        $y=30;
        $y2=27;

        // waardes voor de nummers
        $xnummer=10;
        $ynummer=30;
        $nummer=0;

        //Waardes voor de lijnen
        $xlijn=10;
        $ylijn=31;

        for($i=0; $i<5; $i++){


            for($i=0; $i<500; $i++){

                $nummer++;

                $naam = 'XXXXXX';
                $waar = 'XXXXXXXXXX';


                $y = $y+7;
                $y2 = $y2+7;

                $ynummer = $ynummer+7;

                $ylijn = $ylijn+7;



                $pdf->SetXY($x1, $y);


                //Stukken erop zetten
                if($nummer % 38 === 0){
                    // horizontale waardes voor de variabelen
                    $x1=30;
                    $x2=100;
                    $x3=160;

                    // veritcale waardes voor de variabelen
                    $y=30;
                    $y2=27;

                    // waardes voor de nummers
                    $xnummer=10;
                    $ynummer=30;

                    //Waardes voor de lijnen
                    $xlijn=10;
                    $ylijn=31;
                    $pdf->AddPage();
                }
                $pdf->Text($xnummer,$ynummer,"{$nummer}.",1,'L', TRUE);
                $pdf->Text($x1,$y,"{$naam}",1,'L', TRUE);
                $pdf->Text($x2,$y,"{$waar}",1,'L', TRUE);
                $pdf->Line($xlijn, $ylijn, 190, $ylijn);

                $pdf->Rect($x3, $y2, 3, 3);



            }
        }

答案 1 :(得分:1)

当我在创建新对象

之后直接添加它时,它对我有所帮助
@Override
protected void onDestroy() {

    // remove all content view
    ((FrameLayout)findViewById(android.R.id.content)).removeAllViews();

    // empty arraylist
    genreList.clear();
    genreList.trimToSize();

    // call garbage collector (it may not effect anything)
    Runtime.getRuntime().gc();
    System.gc();
    System.runFinalization();
}