I'm editing a code that creates a PDF from a table filled with data called from a DB.
The code works perfectly to print in the columns the data of the parameters named in the first row as you can see in the picture.
But when the DB asks for several parameters, the columns exceed the right margin limit.
As you can see in this image.
I've seen every post in this web from people having problems with tables and FPDF but I can't find a wayout.
This is the code I have to print the data in the PDF:
$type = 'application/pdf';
$pdf=new \FPDF('L');//Querformat
$name=$arbeitsplatz->getName();
$pdf->AliasNbPages();
$pdf->SetFont('Arial','',10);
$pdf->SetTitle('Arbeitsplatzliste');
$pdf->SetAuthor($user_info->getKuerzel());
$pdf->SetCreator('PMA Manager');
$pdf->SetSubject("Arbeitsplatzliste drucken");
$pdf->SetAutoPageBreak(true, 10);
$pdf->SetMargins(10, 10, 10);
//$pdf->SetTopMargin(20);//in mm
$pdf->AddPage();
$cellLength_array=array();
//set initial Y axis position
$y_axis = 20;
$pdf->SetY($y_axis);
if ($pdf->GetY() == $y_axis)
{
//Kopfzeile(Tabelle header)
$pdf->Cell(30,7,"Probe",1,0,'L');
$pdf->Cell(20,7,"Frist",1,0,'L');
//Start to write table
foreach($apParamArray as $parameter)
{
if($bereich==='W' || $bereich==='I'){
$arbeit_para_name=utf8_decode($parameter->getName()).' ['.utf8_decode($parameter->getEinheit()).']';
}
else
{
$arbeit_para_name=utf8_decode($parameter->getNameD()).' ['.utf8_decode($parameter->getEinheit()).']';
}
$length=strlen($arbeit_para_name)*2;
array_push($cellLength_array,$length);
$pdf->Cell($length,7,$arbeit_para_name,1,0,'C');
}
$pdf->Ln(7);//mm
}
//Start to add data
foreach($apProbenArray as $probe)
{
$frist=$probe->getFrist();
$keys=array();
$keys=array_keys($probe->getParameterliste());
if($bereich==='W' || $bereich==='I'){$pma_nr=$probe->getPmaNr();} else{$pma_nr= $probe->getLaborNr();}
$pdf->Cell(30,7,$pma_nr,'LRB',0,'L');
$pdf->Cell(20,7,$frist,'LRB',0,'L');
for($j=0;$j<(sizeof($arbeit_para_r_ID_array));$j++)
{
$breite=$cellLength_array[$j];
$arbeit_parameterID=$arbeit_para_r_ID_array[$j];
if(in_array($arbeit_parameterID , $keys))
{
$parameterliste=$probe->getParameterliste();
//print_r($parameterliste);
$ergebnis=$parameterliste[$arbeit_parameterID]->getErgebnis();
if($ergebnis!==null)
$pdf->Cell($breite,7,utf8_decode($ergebnis),'LRB',0,'C');
else
$pdf->Cell($breite,7,'...','LRB',0,'C');
}
else
$pdf->Cell($breite,7,'','LRB',0,'C');
}
$pdf->Ln(7);//mm
}
//end of writting data
//Print and get file
$pdf->Output('prints/Arbeitsplatzliste.pdf','F');
$fichier='../web/prints/Arbeitsplatzliste.pdf';
$response = new Response();
$filename='Arbeitsplatzliste.pdf';
$response->setContent(file_get_contents($fichier));
$response->headers->set('Content-Type', $type);
$response->headers->set('Content-disposition', 'filename='.$filename);
return $response;
`
I tryed adding a condition
if ($pdf->GetY() == $y_axis) && ($pdf->GetX() == -10)
$pdf->AddPage();
But didn't work.
My intention was also to show the header line in all pages, but It doesn't work either.
I tryed with this -> How to display table header in every page using FPDF library?
And this -> Add sub-headers in all pages with FPDF