2014-05-20 23 views
5

Tôi đang tạo báo cáo PDF bằng cách sử dụng FPDF. Bây giờ tôi làm cách nào để tạo số trang trên mỗi trang của báo cáo ở cuối trang. Dưới đây là mã mẫu để tạo tệp PDF 2 trang.FPDF Nhận số trang ở chân trang trên mỗi trang khổ A4

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

     $pdf = new FPDF(); 
     $pdf->AliasNbPages(); 
     $pdf->AddPage(); 
     $pdf->SetFont('Arial','',16); 

     $start_x=$pdf->GetX(); 
     $current_y = $pdf->GetY(); 
     $current_x = $pdf->GetX(); 

     $cell_width = 25; $cell_height=14; 
     $j = 20; // This value will be coming from Database so we dont know how many pages the report is going to be 
     for ($i = 0; $i<$j ; $i++){ 
      $pdf->MultiCell($cell_width,$cell_height,'Hello1',1); 
      $current_x+=$cell_width; 
      $pdf->Ln(); 
     } 

     $pdf->Output(); 


     ?> 

Lưu ý: Giá trị $ j sẽ đến từ cơ sở dữ liệu để chúng tôi không biết có bao nhiêu trang là báo cáo.

+0

Có thể trễ một lần nhưng với mã này, bạn sẽ chỉ tạo 1 trang. Để thêm các trang khác, bạn phải thêm '$ pdf-> AddPage()' vào vòng lặp 'for' của bạn. – Dwza

Trả lời

8

Để thêm một trang A4, với hướng dọc, làm:

$pdf->AddPage("P","A4"); 

Tạo một lớp mới mà mở rộng lớp FPDF, và ghi đè lên được xác định trước Footer phương pháp.

Ví dụ:

class PDF extends FPDF 
{ 
    function Footer() 
    { 
     // Go to 1.5 cm from bottom 
     $this->SetY(-15); 
     // Select Arial italic 8 
     $this->SetFont('Arial','I',8); 
     // Print centered page number 
     $this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C'); 
    } 
} 
+0

Cách gọi phương thức Chân trang này từ mã của tôi? Bạn có thể vui lòng cho tôi biết. – Jay

+0

Đối với mã trên tôi đã thêm $ pdf = new PDF(); và nó làm việc cho tôi. cảm ơn.!! – Jay

+1

Chức năng đầu trang và chân trang không cần được gọi riêng. Nếu bạn mở rộng FPDF và sau đó nhanh chóng, những người được gọi là tự động. –

8

Theo nhận xét của tôi bạn có thể đặt

$pdf->PageNo(); 

trên trang của bạn có bao giờ bạn muốn. Ngoài ra bạn có thể thêm một placeholder này

$pdf->AliasNbPages(); 

Điều gì sẽ trông giống như

$pdf->AliasNbPages('{totalPages}'); 

Theo mặc định nó là {nb}. Đó không phải là cần thiết để thêm một placeholder

hơn bạn có thể thêm pagesum như

$pdf->Cell(0, 5, "Page " . $pdf->PageNo() . "/{totalPages}", 0, 1); 

hoặc không giữ chỗ của riêng bạn

$pdf->Cell(0, 5, "Page " . $pdf->PageNo() . "/{nb}", 0, 1); 

này sẽ tạo ra ví dụ

Trang 1/10

trong trường hợp đã có 10 trang :)

Nhưng hãy cẩn thận

Sử dụng giữ chỗ sẽ mess lên chiều rộng của tế bào. Vì vậy, nếu bạn có ví dụ Chiều rộng trang 180 so với 90 không phải là giữa nữa (Trong dòng nơi bạn sử dụng trình giữ chỗ). Bạn sẽ thấy nếu bạn cố gắng :)

Các vấn đề liên quan