Zend_Pdf, creare file pdf in PHP (1)

Nella realizzazione dei siti web, può capitare di dover creare dei file in formato PDF direttamente con il codice PHP, per esempio per realizzare moduli d’ordine per un e-commerce o schede tecniche di articoli di un catalogo. Comunque creare pdf i cui contenuti siano prelevati dinamicamente dal database in modo da avere dei file sempre aggiornati con i dati recenti del sito (come nel caso di schede tecniche di prodotto).

Per realizzare i file in PDF si possono trovare diverse librerie. Nel mio caso ho preferito utilizzare quelle presenti in Zend Framework, le Zend_Pdf. Dopo aver scaricato e copiato le librerie nel vostro hosting (nel mio caso tengo la directory Zend nella root del sito) iniziamo  a creare il file:

require_once ‘Zend/Pdf.php’;

Dopo aver incluso la libreria possiamo iniziare a creare la prima pagina del PDF in due modi: con una pagina bianca oppure partendo da un altro PDF esistente. Questo secondo metodo può essere molto utile perché così potremo inserire solamente i contenuti testuali senza dover realizzare la gabbia grafica che può essere realizzata in Indesign o con altri software grafici.

1° metodo: pdf con pagina bianca

$pdf = new Zend_Pdf();
$pdf->pages[0] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);

Abbiamo così creato una nuova pagina in formato A4. $pdf->pages[0] corrisponde alla prima pagina del PDF e possiamo creare le successive ripetendo il comando più volte:

$pdf->pages[1] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
$pdf->pages[2] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
….

2° metodo: pdf da altro file pdf da utilizzare come base

$pdf = Zend_Pdf::load(‘modello.pdf’);

In questo modo la nostra prima pagina avrà come sfondo il layout del file modello.pdf.
Se vogliamo creare le pagine successive con lo stesso modello, possiamo salvare subito il template su di una variabile per poi utilizzarla in fase di creazione delle altre pagine:

$template = $pdf->pages[0]; // salvataggio del template
$pdf->pages[1] = $new Zend_Pdf_Page($template);
$pdf->pages[2] = $new Zend_Pdf_Page($template);
….

Infine per salvare il nostro PDF

$pdf->save(‘mio_pdf.pdf’);

che nel nostro caso sarà formato da una serie di pagine vuote, bianche o con il pdf  di base a seconda del metodo utilizzato.

I prossimi giorni vediamo come gestire i contenuti testuali.