Generare PDF da una pagina HTML

Molte volte capita di volere generare un PDF da una pagina HTML.

Il caso più classico è quello di un preventivo , di una prenotazione o semplicemente di un catalogo prodotti.

Ci sono varie classi che si possono utilizzare per questo compito. Vi presento due classi che utilizzo regolarmente.

DOMPDF (Vai al sito ufficiale)

Libreria relativamente giovane ma già abbastanza potete. La differenza rispetto alle altre librerie è che data la sua giovane età rispetta molto meglio i fogli di stile, per cui si riescono a generare PDF con del codice abbastanza pulito.

E’ sufficiente scaricare il pacchetto dal sito ufficiale e scompattarlo nel vostro sito.

Probabilmente per la sua giovinezza soffre di grossi problemi quando gli si passano delle pagine generate dinamicamente. Bisogna infatti ricorrere a brutti espedienti per evitare la generazione di file corrotti ( Errore di lettura 110) come ad esempio settare l’error_reporting a 0 e disabilitare il display errors.

Dompdf infatti genera un PDF illeggibile se trova ad esempio una variabile non settata e gli si applica magari un number format o qualsiasi altra istruzioni che generi un warning o altro.

Un altro grosso problema , documentato nel forum di supporto ufficiale ( vai al forum ), è che se si formatta un numero e non si è settato la codifica “en” il pdf verrà corrotto. Bisogna infatti impostare setlocale(LC_ALL,”en”) prima di chiamare la classe.

Onestamente ho dovuto abbandonarla e la utilizzo esclusivamente per la generazione di PDF molto semplici.

Nel caso voleste approfondire c’è un bel tutorial su developertutorials

HTMLDOC (Vai al sito ufficiale)

Rispetto a DOMPDF questa classe è un più ostica da utilizzare perchè supporta molto poco i fogli di stile CSS.

Da parte sua però è molto più robusta e non soffre di tutti i problemi di DOMPDF.

Necessita di un url diretto alla pagina html (o php ecc..) da cui vogliamo generare il pdf.

L’unica cosa che dovete fare è installare un modulo nel vostro server e non è detto che il vostro mantainer l’abbia già fatto.

… detto questo … Buona generazione ! :)

friimaind

Mi chiamo Massimiliano e sono uno sviluppatore web. Ho aperto questo blog principalmente come agenda dove tenere traccia di tutte le mie passioni :)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *