20

I've googled around and found this question very common but I can't seem to find a proper and direct answer. I'm using FPDF and I want to generate tables using MultiCell() since I need the line break property of it. Tried Cell() but it can't read the line break.

$col1="PILOT REMARKS\n\n";
$pdf->MultiCell(189, 10, $col1, 1, 1);
$col2="Pilot's Name and Signature\n".$name;
$pdf->MultiCell(63, 10, $col2, 1);
$pdf->Ln(0);
$col3="Date Prepared\n".$date;
$pdf->MultiCell(63, 10, $col3, 1);

But I can't generate it properly 'cause MultiCell() stacks the result. How can I achieve having MultiCell() printed adjacently with each other in a most simple and easy way?

Found this similar question but it doesn't provide a clear answer. Any help will be appreciated. Thanks in advance.

Community
  • 1
  • 1
xjshiya
  • 915
  • 7
  • 16
  • 44

4 Answers4

44

Try storing the X and Y co-ordinates and then setting them after the write

$x = $pdf->GetX();
$y = $pdf->GetY();

$col1="PILOT REMARKS\n\n";
$pdf->MultiCell(189, 10, $col1, 1, 1);

$pdf->SetXY($x + 189, $y);

$col2="Pilot's Name and Signature\n".$name;
$pdf->MultiCell(63, 10, $col2, 1);
$pdf->Ln(0);
$col3="Date Prepared\n".$date;
$pdf->MultiCell(63, 10, $col3, 1);
Danny
  • 709
  • 8
  • 13
7

Just to add to Danny's answer. I like keeping the Width of each column stored and then use that when executing the SetXY method.

Example:

$x = $this->x;
$y = $this->y;
$push_right = 0;

$this->MultiCell($w = 100,3,"Column\r\nNumber 1",1,'C',1);

$push_right += $w;
$this->SetXY($x + $push_right, $y);

$this->MultiCell($w = 60,3,"Column\r\nNumber 2",1,'C',1);

$push_right += $w;
$this->SetXY($x + $push_right, $y);

$this->MultiCell(0,3,"Column 3\r\nFilling in the Rest",1,'C',1);
Community
  • 1
  • 1
mpickens
  • 113
  • 1
  • 4
2

You can use SetXY(x,y) function to set cursor in pdf .

          $pdf->SetXY(x,y);

Set cursor to print data in pdf

Where x is x-axis value and y is y-axis value

Abhishek
  • 81
  • 2
  • 2
  • 10
0

None of these worked for me. I had to SetXY before each element (for some reason it's reseting to the start of the multicell after write of any element). So before each and every element, manually SetXY.

LKT
  • 111
  • 7