FPDF после разрыва страницы с использованием многоклеточных значений SetAutoPageBreak не вставляются в заданную позицию Y - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь отобразить данные с помощью multiCell.И когда данные на странице достигают y = 228, я хочу, чтобы они переходили на следующую страницу и отображались в позиции y = 112.

В качестве первого шага я попытался добавить только 2 простых условия:

, когда данные поступают в позицию y = 228, создают новую страницу, когда данные переходят на следующую страницу, отображают результат в позиции = 112

Это сработало.Но если текущее содержимое многоэлементной памяти велико, оно не переходит на следующую страницу, пока не завершится запись всего многоэлементного содержимого, поэтому я добавил функцию SetAutoPageBreak, поэтому она вставляет разрыв страницы при y = 228.Здесь, где начинаются проблемы Код не вставляет мои данные на новую страницу в позиции, которую я определил (y = 112), он вставляет их в начале. Я не знаю, как решить эту проблему, я надеюсь, что смогу найти некоторую помощь, которую ябуду признателен.

Вот мой код:

<?Php
require('../fpdf/fpdf.php');
$pdf = new FPDF(); 
$pdf->AddPage();
$pdf->SetFont('Arial','B',12);
$y=$pdf->GetY();
$x=$pdf->GetX();
$width_cell=array(10,30,50);
$pdf->SetFillColor(193,229,252);  
$pdf->SetY(112);




$pdf->Cell($width_cell[0],10,'ID',1,0,C,true);  
$pdf->Cell($width_cell[1],10,'NAME',1,0,C,true);  
$pdf->Cell($width_cell[2],10,'CLASS',1,1,C,true);  


$pdf->SetFont('Arial','',10);

for($i=0;$i<30;$i++)
{
    $pdf->Cell($width_cell[0],10,$i,1,0,C,false);  
$pdf->Cell($width_cell[1],10,'John Deo',1,0,C,false);   
$pdf->Cell($width_cell[2],10,'Four',1,1,C,false);  
 $y=$pdf->GetY();
 $pdf->Cell($width_cell[0],10,$i,1,0,C,false);  
 $pdf->Cell($width_cell[1],10,'Y:'.$y,1,0,C,false);  
 //$pdf->Cell($width_cell[2],10,'Four',1,1,C,false);   
 $pdf->MultiCell($width_cell[2],10,'four four four four four four four four four four four four four four four four four four four four four four ',1,C,false);

  // Uncomment this line to see what Happends when the Page Break is inserted 
 //$pdf->SetAutoPageBreak(auto,69);

$y=$pdf->GetY();
if($y >228 && $i!=29 )
{
$pdf->AddPage();
$pdf->SetY(112);
}
 /*
if($pdf->PageNo()!=1 &&  $y < 20){


   $pdf->SetY(112);
}  */

}
$pdf->Output();

?> 

1 Ответ

0 голосов
/ 26 сентября 2019

Расширьте fPDF и добавьте функцию заголовка, которая устанавливает Y в нужное вам положение при каждом запуске новой страницы.

require ('fpdf.php');
class PDF extends FPDF {

    function Header() {

        $this->SetY(112);
    }

}  // end of the PDF class

$pdf = new pdf();
$pdf->AddPage();
$pdf->SetFont('Arial','B',12);
$y=$pdf->GetY();
$x=$pdf->GetX();
$width_cell=array(10,30,50);
$pdf->SetFillColor(193,229,252);
$pdf->SetY(112);

Остальная часть вашего кода идет сюда, и вы действительно хотите раскомментировать строку AutoPageBreak,Вам также нужно изменить строку AutoPageBreak на

$pdf->SetAutoPageBreak(1,69);

, поскольку первый аргумент является логическим значением, указывающим, должна ли она быть включена.

...