2014-05-20 21 views
5

Sto creando report PDF utilizzando FPDF. Ora come faccio a generare numeri di pagina su ogni pagina di un report in fondo alla pagina. Di seguito è riportato il codice di esempio per la generazione di un PDF di 2 pagine.FPDF Ottenere numeri di pagina al piè di pagina Ogni pagina in formato 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(); 


     ?> 

Nota: il valore $ j verrà dal database, quindi non sappiamo quante pagine sarà il report.

+0

Maggio un po 'in ritardo ma con questo codice produrrà solo 1 pagina. Per aggiungere più pagine devi aggiungere più '$ pdf-> AddPage()' nel tuo ciclo 'for'. – Dwza

risposta

8

Per aggiungere una pagina A4, con orientamento verticale, fare:

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

creare una nuova classe che estende la classe FPDF, e l'override del metodo predefinito Footer.

Esempio:

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

Come chiamare questo metodo Footer dal mio codice? Potete dirmi, per favore. – Jay

+0

Per il codice precedente ho aggiunto $ pdf = nuovo PDF(); e ha funzionato per me. Grazie.!! – Jay

+1

Non è necessario chiamare separatamente le funzioni di intestazione e piè di pagina. Se si estendono FPDF e quindi si istanzia, vengono chiamati automaticamente. –

8

Secondo il mio commento è possibile inserire

$pdf->PageNo(); 

sulla tua pagina dove mai ti piace. Inoltre è possibile aggiungere un segnaposto per questo

$pdf->AliasNbPages(); 

cosa sarebbe simile

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

Di default è {nb}. Non è necessario aggiungere un segnaposto

di quanto si possa aggiungere il pagesum come

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

o senza il proprio segnaposto

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

questo produrrebbe per esempio

Pagina 1/10

nel caso in cui ci sono stati 10 pagine :)

Ma attenzione

Uso del segnaposto volontà rovinare la larghezza della cella. Quindi se ne hai, ad es. 180 pagine di larghezza rispetto a 90 non è più la metà più (Nella riga in cui si utilizza il segnaposto). Vedrai se ci provi :)

Problemi correlati