2011-06-26 31 views
6

Tôi đang in một ô bằng cách sử dụng lớp FPDF (http://www.fpdf.org/) trong php. Các tế bào nên được đặt vào góc trên bên trái.Tại sao có một padding trái trong một tế bào bằng cách sử dụng FPDF trong php?

Mọi thứ đều hoạt động tốt, ngoại trừ việc chèn một phần đệm trái vào bên trong ô.

Đây là mã của tôi:

$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 

Dưới đây là một ảnh chụp màn hình của PDF mà được xuất ra với FPDF:

Screenshot of PDF output with FPDF

Tại sao lại có một lớp đệm bên trái trong một tế bào sử dụng FPDF trong php và làm thế nào tôi có thể loại bỏ các padding?

+1

Bạn thực sự nên kiểm [TCPDF] (http://www.tcpdf.org/).Tôi không tin rằng FPDF đang được duy trì nữa. –

+0

Tôi đã lấy lời khuyên của bạn và tạo ra cùng một trang với TCPDF và bây giờ tôi nhận được một đệm trên cùng và bên trái trong tế bào. Tôi đã đăng mã và ảnh chụp màn hình tại đây: http://stackoverflow.com/questions/6483326/why-is-there-a-left-and-top-padding-in-a-cell-using-tcpdf-in-php – zeckdude

+0

Lời xin lỗi của tôi, tôi đã không nói rằng nó sẽ nhất thiết phải khắc phục vấn đề, chỉ là TCPDF là một gói hiện đại hơn và duy trì hơn FPDF. Tôi sử dụng để sử dụng FPDF, nhưng đã tìm thấy TCPDF là hữu ích hơn. –

Trả lời

0

Bạn đã thử chạy SetMargins(0,0) chưa?

SetMargins

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

Mô tả

Xác định trái, phía trên và lề phải. Theo mặc định, chúng bằng 1 cm. Gọi phương thức này để thay đổi chúng.

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

+0

Cảm ơn bạn đã có mẹo, nhưng tôi thực sự đã sử dụng chức năng đó rồi. Tôi đã không liệt kê nó ở đây bởi vì tôi không nghĩ rằng nó là quan trọng. Tôi đã cập nhật tất cả các chức năng tôi đang sử dụng để bạn có ý tưởng tốt hơn. – zeckdude

+1

Chức năng này dành cho cài đặt lề cho toàn bộ trang, không phải từng ô. – kurdtpage

1

Tôi không thể làm việc ra làm thế nào để loại bỏ các padding.

Để giải quyết sự cố, bạn nên biết rằng nó có vẻ là 1mm, bất kể kích thước phông chữ. Cùng một phần đệm được áp dụng ở cạnh phải với văn bản căn phải.

1

Tôi đã gặp sự cố tương tự. Chỉ dòng 1 có lề không mong muốn này, vì vậy cách giải quyết của tôi là thế này:

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

Giải quyết vấn đề của tôi, bạn có thể chuyển giá trị độ cao cho 'Ln (1)' –

12

Tôi biết đây là siêu cũ, nhưng tôi đã có và khắc phục sự cố tương tự như vậy có lẽ ai đó sẽ tìm thấy nó hữu ích.

Có một thuộc tính trong lớp FPDF được gọi là $ cMargin, được sử dụng để tính toán x-offset của văn bản trước khi nó được in bên trong ô, nhưng dường như không có thiết lập cho nó. Đó là một tài sản công cộng, vì vậy sau khi bạn đã khởi tạo lớp FPDF của bạn, chỉ cần gọi:

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

Và các tế bào của bạn sẽ không có mà đệm ở bên trái nữa.

+0

Trong FPDF 1.8.1 Thuộc tính này được bảo vệ, vì vậy câu trả lời này sẽ không hoạt động. –

3

sửa chữa nhỏ 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

Nhỏ sang một bên, lề ô không có hiệu lực nếu ô được đặt thành Căn giữa – kurdtpage

0

Sử dụng SetMargins trước AddPage

dụ:

$pdf=new PDF(); 
$pdf->SetMargins(23, 44, 11.7); 
$pdf->AliasNbPages(); 
$pdf->AddPage(); 
Các vấn đề liên quan