Creare PDF con PHP usando fpdf

E' completamente gratuito e mette a disposizione molti metodi di personalizzazione del documento PDF da generare con il php.

Fpdf è una classe PHP molto utile per creare files PDF in php senza utilizzare la libreria PDFlib che richiede un pagamento per utilizzo professionale. Fpdf è completamente gratuito e mette a disposizione molti metodi di personalizzazione del documento PDF da generare con il php.

Semplice immaginare quanto possa essere utile per sistemi informativi che utilizzando MySQL e php come tecnologia.

I passi per creare con il php un documento PDF sono molto semplici, è sufficiente includere nel documento php la libreria (scaricabile qui in formato ZIP), creare un nuovo oggetto PDF ed utilizzare i metodi dell'oggetto per impostare e creare il documento da generare;

  1. <?php
  2. require('fpdf');
  3. $pdf_doc=new FPDF();
  4. $pdf_doc->AddPage();
  5. $pdf_doc->SetFont('Arial','B',32);
  6. $pdf_doc->Cell(60,20,'Ciao mondo!');
  7. $pdf_doc->Output();
  8. <?

In questo esempio base viene chiamata la libreria (2), creato il nuovo oggetto (3) , utilizzati i metodi AddPage e SetFont per aggiungere una pagina ed impostarne le caratteristiche base (4,5), delineata una area all'interno del documento entro la quale scrivere(6) e generato il documento (7).

Metodi principali per impostare il PDF

  • AddPage() - Aggiunge una nuova pagina al documento
  • SetFont(carattere, stile, corpo) - Imposta il carattere principale del documento
  • SetMargins(sinistro,superiore, destro) - Imposta i margini
  • SetAuthor(nome autore) - Imposta l'autore del documento
  • Widths()

e molti altri....

Metodi per il layout

Fpdf dispone di metodi semplici per impaginare il pdf , in particolare è possibile evidenziare aree rettangolari inviando posizionamento e dimensioni come parametri del metodo Cell() o impostare colonne verticali con il metodo MultiCell().

Nel caso in cui si voglia procedere alla creazione di una tabella però sarà necessario programmare un ciclo chiamando il metodo Cell() impostando opportunamente dimensione e posizionamento di ogni singola cella. Tuttavia esiste una ricca libreria di funzioni sviluppate dagli utenti che semplificano tali automatismi, una su tutte la PDF_MC_Table (scaricabile qui) particolarmente utile per automatizzare la creazioni di tabelle da recordset di MySQL.

Ecco un esempio da me sviluppato (ed opportunamente semplificato) nato dall'esigenza di inviare in stampa etichette per mailing da un sistema intranet basato su php-MySQL;

  1.  <?php
  2. require_once('../../Connections/settings.php'); //apre la connessione DB nella variabile $conn
  3. mysql_select_db($database_gea, $gea);
  4. $clienti = mysql_query("SELECT nome, indirizzo,citta FROM clienti", $conn);
  5. $row_clienti = mysql_fetch_assoc($clienti);
  6.  
  7. do { // mi genero un array con i dati delle etichette che userò in seguito
  8. $labels['nome'][ ]=$row_clienti ['nome'];
  9. $labels['indirizzo'][ ]=$row_clienti ['indirizzo'];
  10. $labels['citta'][ ]=$row_clienti ['citta'];
  11. } while ($row_clienti = mysql_fetch_assoc($clienti));
  12.  
  13. define('FPDF_FONTPATH','font/');
  14. require('mc_table.php'); //chiamo la libreria PDF_MC_Table, che a sua volta chiama lo script principale
  15.  
  16. $pdf=new PDF_MC_Table(); //genero l'oggetto PDF_TABLE
  17. $pdf->SetMargins(0,0,0); //imposto i margini a 0 per regolarmi con i bordi del foglio delle etichette
  18. $pdf->Open(); //genero l'oggetto PDF
  19. $pdf->AddPage(); //aggiungo una pagina
  20. $pdf->SetFont('Times','',8); // imposto il font
  21. $pdf->SetWidths(array(70,70,70)); // mi imposto il foglio in 3 colonne larghe 7 cm (come il foglio delle etichette)
  22. srand(microtime()*1000000); //istruzione tecnica (seme random)
  23.  
  24. for($i=0;$i<count($labels['nome']);$i++) { //inizio a scorrere gli array con i dati, mandandone in output 3 alla volta
  25.  
  26. $COL_A=$labels['nome'][$i].$labels['indirizzo'][$i].$labels['citta'][$i];
  27. $i++;
  28.  
  29. $COL_B=$labels['nome'][$i].$labels['indirizzo'][$i].$labels['citta'][$i];
  30. $i++;
  31.  
  32. $COL_C=$labels['nome'][$i].$labels['indirizzo'][$i].$labels['citta'][$i];
  33.  
  34. $pdf->Row(array($COL_A,$COL_B,$COL_C)); //genero la riga nel foglio PDF
  35. }
  36.  
  37. $pdf->Output(); // apro il PDF
  38.  
  39. mysql_free_result($clienti);


Tags:      

Daniele Di Gregorio


14.11.2006 Opensource e strumenti on line


Vuoi ricevere gli ultimi articoli
e tenere d'occhio i commenti direttamente sul tuo PC?

Ikaro Toolbar

Potrai inoltre navigare ascoltando decine
di radio on line, accedere a centinaia
di TV in streaming
e chattare con gli altri visitatori del sito.

Per Windows 2000/XP. No spyware!

Syndacate Feed

Feedburner Technorati

Avvisami per email quando sono presenti nuovi articoli:


Contatto Contattami


Skype: ikaro.net
Email: compila il modulo


Pubblica Pubblica


Collabora

Suggerisci un tuo post o pubblica il tuo articolo. Gli articoli verranno pubblicati assieme agli altri redazionali con un link al tuo blog (continua)


Newsradar

• Ning: Crea Il Tuo Social Network Con Pochi Click

• Pochi Layout Per Movable Type 4? Prova Col Design Assistant

• Usa Il Tuo Account Google Come OpenID

• Mi Dai Il Tuo Account Digg?

• La Russia Taglia I Ponti Con Microsoft: Dal 2009 Solo Linux

• Crea Le Tue Favicon Online: Favikon

• Blogging: Layout Personalizzati In Un Istante Con Firdamatic

• Internet e Caipirinha: Ikaro Sbarca In Brasile (e Portogallo)

• Velocità ADSL: I Test Online Più Affidabili

• Una Miniera Di Conoscenza Condivisa: eDocr

Altre news •>


Creative Commons License
Ove non diversamente specificato, tutti i contenuti sono rilasciati sotto Licenza Creative Commons.

Logo
English