• 2018-11-24 163743
  • 2018-12-05 175943
  • 2018-11-16 084045
  • 2018-11-24 163752
  • 2018-12-02 144318
  • 2018-12-01 121211
  • 2018-12-06 191523
  • 2018-11-28 151134

Script

Qui puoi ricercare e trovare alcuni Script che ho voluto pubblicare per condividerli con voi.

Generare PDF con PHP




Oggi volevo segnalarvi una classe che ho usato recentemente in un progetto web per la generazione di PDF partendo da codice HTML. L'esigenza che mi si era presentata era quella di generare dinamicamente delle fatture che poi venivano spedite automaticamente ai clienti via mail.

Inizialmente avevo trovato solo prodotti commerciali che soddisfacevano le mie esigenze, ma poi questa classe ha risolto tutti i mie problemi. :-)

Il nome della classe è HTML2PDF ed la URL del progetto ufficiale è la seguente: http://www.html2pdf.fr/
Qui trovate una serie di esempi, e qui il wiki ufficiale

Html2pdf è un convertitore da HTML a PDF scritto in PHP.
Esso consente la conversione di HTML 4.01 valido nel formato PDF, ed è distribuito sotto licenza LGPL.
Questa libreria è stata progettata per gestire principalmente tabelle complesse per la generazione di fatture,
bolle di consegna e altri documenti ufficiali. Non tutti i TAG HTML sono supportati.
Il mio consiglio è quello di partire dagli esempi che trovate sul sito

 

Questo uno stralcio di esempio che ho voluto scrivere per voi, e che è ralativo alla demo che trovate:

function genera_fattura($destination_path, $num_fattura, $content)
    {
        require('html2pdf_v4.01/html2pdf.class.php');
        
        $html2pdf = new HTML2PDF('P','A4','it');
        $html2pdf->WriteHTML($content);
        //$html2pdf->Output($destination_path . $num_fattura . ".pdf", 'F'); //SALVO IN FILE SYSTEM
        $html2pdf->Output($num_fattura . ".pdf", 'D'); //VISUALIZZO CON BROWSER
    }

$nominativo=$_POST['nominativo'];    
    
$contenuto_pdf='<page style="font-size:11px"><br><br><br><img src="logo.jpg" alt="MaxTacchetti.it" width="100" ><br><br><br><br><table cellspacing="0" style="text-align: left; border: solid 0px red; background: #FFFFFF;width:100%"><tr><td style="font-size:11px;width:33%" valign="top">via bla bla bla, 15<br>64100 Teramo (te)<br>tel. 0861.123456 / fax 0861.654321<br>pi/cf 12345678901<br><br>www.maxtacchetti.it<br>info@maxtacchetti.it</td><td width=33%" style="font-size:11px;width:34%" valign="top"><img src="white.jpg" width="200" ></td><td style="font-size:11px;width:33%" valign="top"><font style="font-weight:bold">' . $nominativo . '</font><br><br>Via di prova n. 10<br> Giulianova (TE)<br></td></tr></table><br><br><br><table cellspacing="14" style="text-align: left; border: solid 1px black; background: #FFFFFF;width:100%"><tr><td style="font-size:11px;font-weight:bold;width:35%" valign="top">FATTURA COMMERCIALE</td><td style="font-size:11px;width:30%" valign="top"><font style="font-size:8px;color:#888888">PARTITA IVA/COD. FISCALE</font><br>10987654321</td><td style="font-size:11px;width:15%" valign="top"><font style="font-size:8px;color:#888888">DATA DOCUMENTO</font><br>' . date('d/m/Y') . '</td><td style="font-size:11px;width:20%" valign="top"><font style="font-size:8px;color:#888888">NR. DOCUMENTO</font><br>'. date('Y').'-'. date('m').'</td><
;/tr><tr><td style="font-size:11px;width:35%" valign="top"><font style="font-size:8px;color:#888888">CONDIZIONI DI PAGAMENTO</font><br>Bonifico Bancario</td><td colspan="2" valign="top"><font style="font-size:8px;color:#888888">BANCA DI APPOGGIO</font><br>IBAN IT11 2222 3333 4444 5555 6666 777<br>info@maxtacchetti.it</td><td style="font-size:11px;width:20%" valign="top"><font style="font-size:8px;color:#888888">SCADENZA PAGAMENTO</font><br>11/11/2011</td></tr></table><br><br><br><table cellspacing="12" style="width: 100%; border: solid 1px black; border-bottom: solid 0px black; background: #E7E7E7; text-align: center;"><tr><th style="width: 10%; text-align: left">Codice</th><th style="width: 40%; text-align: left">Descrizione fornitura</th><th style="width: 20%; text-align: right">Prezzo</th><th style="width: 10%; text-align: center">Sconto</th><th style="width: 20%; text-align: right">Importo</th></tr></table><table cellspacing="12" style="width: 100%; border: solid 1px black; border-bottom: solid 0px black; background: #F7F7F7; text-align: center;">
    <tr>
        <td style="width: 10%; text-align: left">RDP</td>
        <td style="width: 40%; text-align: left"><font style="font-weight:bold">Rinnovo Hosting Professional</font><br>per il dominio maxtacchetti.it<br>11/11/2010 - 11/11/2011</td>
        <td style="width: 20%; text-align: right">€ 777.00</td>
        <td style="width: 10%; text-align: center">10.00%</td>
        <td style="width: 20%; text-align: right">€ 699,30</td>

    </tr>
</table><table cellspacing="12" style="width: 100%; border: solid 0px black; border-top: solid 1px black; text-align: center;"><tr><th style="width: 80%; text-align: right;">Totale Imponibile: </th><th style="width: 20%; text-align: right;">€ 699,30</th></tr><tr><th style="width: 80%; text-align: right;">Iva (20%): </th><th style="width: 20%; text-align: right;">€ 139,86</th></tr><tr><th style="width: 80%; text-align: right;">Totale Documento: </th><th style="width: 20%; text-align: right;">€ 839,16</th></tr></table></page>';
                                            
                                            
//chiamo funzione che genera fattura
genera_fattura("file/", 1234, $contenuto_pdf);

Ho creato una funzione che riceve in ingresso il Path all'interno del quale salvare il pdf, il numero della fattura (che corrisponde al nome da assegnare al file PDF, ed il contenuto HTML da utilizzare per generare il PDF.

Un esempio rapido è visualizzabile qui

In allegato trovate anche il file ZIP dell'esempio completo. Per ragioni di spazio ho cancellato dalla classe originale una serie di file che non utilizzavo nella demo, vi consiglio dunque di scaricarvi la classe dal sito HTML2PDF.