2011-06-26 6 views
6

Drukuję komórkę przy użyciu klasy FPDF (http://www.fpdf.org/) w php. Komórka powinna zostać umieszczona w lewym górnym rogu.Dlaczego w komórce jest lewe wypełnienie za pomocą FPDF w php?

Wszystko działa świetnie, z wyjątkiem tego, że w komórce dodano lewą wyściółkę.

Oto mój kod:

$pdf = new FPDF('L', 'mm', array(50.8,88.9)); 
$pdf->addPage('L', array(50.8,88.9)); 
$pdf->SetDisplayMode(100,'default'); 
$pdf->SetTextColor(0,0,0); 
$pdf->SetMargins(0,0,0);  
$pdf->SetAutoPageBreak(0); 
$pdf->SetFont('Arial','',8.5); 

$pdf->SetXY(0, 0); //sets the position for the name 
$pdf->Cell(0,2.98740833, "Your Name", '1', 2, 'L', false); //Name 

Oto zrzut ekranu z pliku PDF, który jest wpisywanie z FPDF:

Screenshot of PDF output with FPDF

Dlaczego istnieje lewej wyściółka w komórce przy użyciu FPDF w php i jak mogę usunąć wyściółkę?

+1

Naprawdę powinien kasy [TCPDF] (http://www.tcpdf.org/).Nie wierzę, że FPDF jest już utrzymywany. –

+0

Wziąłem twoją radę i utworzyłem tę samą stronę z TCPDF i otrzymuję teraz górny i lewy margines w komórce. Zamieszczam tutaj kod i zrzuty ekranu: http://stackoverflow.com/questions/6483326/why-is-there-a-left-and-top-padding-in-a-cell-using-tcpdf-in-php – zeckdude

+0

Moje przeprosiny, nie mówiłem, że to musi rozwiązać problem, tylko że TCPDF jest bardziej nowoczesnym i utrzymanym pakietem niż FPDF. Używałem FPDF, ale uważałem, że TCPDF jest bardziej użyteczny. –

Odpowiedz

0

Czy próbowałeś już używać SetMargins(0,0)?

SetMargins

SetMargins(float left, float top [, float right])

Opis

Określa lewy, górny i prawy margines. Domyślnie są one równe 1 cm. Zadzwoń do tej metody, aby je zmienić.

http://www.fpdf.org/en/doc/setmargins.htm

+0

Dziękuję za cynk, ale już teraz używam tej funkcji. Nie wymieniłem tego tutaj, ponieważ nie sądziłem, że to ważne. Zaktualizowałem teraz wszystkie funkcje, których używam, abyś miał lepszy pomysł. – zeckdude

+1

Ta funkcja służy do ustawiania marginesu dla całej strony, a nie dla każdej komórki. – kurdtpage

1

nie mogę dowiedzieć się, jak usunąć wyściółkę.

Aby obejść ten problem, warto wiedzieć, że ma wielkość 1 mm, niezależnie od rozmiaru czcionki. Ta sama dopełnienie jest nakładana na prawą krawędź za pomocą wyrównanego do prawej strony tekstu.

1

Wystąpiłam w tym samym problemie. Tylko 1 linia ma ten niepożądany margines, więc moje obejście było to:

$pdf->Ln(); //workaround for 1st line 
    $pdf->Cell(..); 
+0

Rozwiązał również mój problem, można przekazać wartość wysokości do 'Ln (1)' –

12

Wiem, że to bardzo stary, ale miałem i stała ten sam problem, więc może ktoś znajdzie to użyteczne.

W klasie FPDF znajduje się właściwość o nazwie $ cMargin, która służy do obliczenia przesunięcia x tekstu przed wydrukowaniem w komórce, ale nie wydaje się, aby był to ustawnik dla niego. To jest własnością publiczną, tak jak już instancja swoją klasę FPDF, zadzwoń:

$pdf = new fpdf('P','mm','A4'); 
$pdf->cMargin = 0; 

A twoje komórki nie będą mieć tego wyściółkę po lewej więcej.

+0

W FPDF 1.8.1 Ta właściwość jest chroniona, więc ta odpowiedź nie będzie działać. –

3

Mała poprawka updateproof

<?php 
require("fpdf.php"); 

class CustomFPDF extends FPDF{ 
    function SetCellMargin($margin){ 
     // Set cell margin 
     $this->cMargin = $margin; 
    } 
} 
?> 

<?php 
$pdf = new CustomFPDF(); 
$pdf->setCellMargin(0); 
?> 
+0

Niewielki margines komórki nie działa, jeśli komórka jest ustawiona na wyrównanie do środka – kurdtpage

0

użytkowania SetMargins przed addPage

przykład:

$pdf=new PDF(); 
$pdf->SetMargins(23, 44, 11.7); 
$pdf->AliasNbPages(); 
$pdf->AddPage();