2015-05-15 3 views
3

У меня есть три ячейки и я пытаюсь выровнять текст влево, в центре и вправо.FPDF align text LEFT, Center и Right

function Footer() 
{ 
    $this->SetY(-15); 


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

    $this->Cell(0,10,'Left text',0,0,'L'); 

    $this->Cell(0,10,'Center text:',0,0,'C'); 

    $this->Cell(0, 10, 'Right text', 0, 0, 'R'); 
} 

Когда я выхожу в мой файл PDF, center text автоматически выравнивается. Вот как это выглядит:

enter image description here

Может кто-нибудь сказать мне, что я делаю неправильно здесь и как я могу решить эту проблему?

ответ

6

Новое положение после вызова ячейки будет установлено справа от каждой ячейки, если вы установили ln-параметр метода Cell в 0. Вам нужно сбросить x-координату перед последними 2 вызовами сотовой связи:

function Footer() 
{ 
    $this->SetY(-15); 

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

    $this->Cell(0,10,'Left text',0,0,'L'); 
    $this->SetX($this->lMargin); 
    $this->Cell(0,10,'Center text:',0,0,'C'); 
    $this->SetX($this->lMargin); 
    $this->Cell(0, 10, 'Right text', 0, 0, 'R'); 
} 
+0

Что такое '$ this'? Откуда берется «largin»? У FPDF нет такого имущества. –

+1

Метод Footer должен быть реализован в расширяющемся классе FPDF. FPDF [has] (https://github.com/Setasign/FPDF/blob/master/fpdf.php#L31) это свойство. –

0

Хотя ответ Ян Slabon было действительно хорошо, что я до сих пор были проблемы с центром не точно по центру на моей странице, может быть, у нас есть различные версии библиотеки, и это то, что объясняет незначительные различия, например, он использует lMargin и в некоторых версиях, которые недоступны. В любом случае, так оно и было для меня:

 $pdf = new tFPDF\PDF(); 
     //it helps out to add margin to the document first 
     $pdf->setMargins(23, 44, 11.7); 
     $pdf->AddPage(); 
     //this was a special font I used 
     $pdf->AddFont('FuturaMed','','AIGFutura-Medium.ttf',true); 
     $pdf->SetFont('FuturaMed','',16); 

     $nombre = "NAME OF PERSON"; 
     $apellido = "LASTNAME OF PERSON"; 

     $pos = 10; 
     //adding XY as well helped me, for some reaons without it again it wasn't entirely centered 
     $pdf->SetXY(0, 10); 

     //with SetX I use numbers instead of lMargin, and I also use half of the size I added as margin for the page when I did SetMargins 
     $pdf->SetX(11.5); 
     $pdf->Cell(0,$pos,$nombre,0,0,'C'); 

     $pdf->SetX(11.5); 
     //$pdf->SetFont('FuturaMed','',12); 
     $pos = $pos + 10; 
     $pdf->Cell(0,$pos,$apellido,0,0,'C'); 
     $pdf->Output('example.pdf', 'F'); 
Смежные вопросы