
Visto che avevo parlato dei file zip creati con php, perchè non parlare anche dei file PDF? Sempre più questo formato prende piede ogni giorno...e potremmo avere la necessità di creare on-the-fly dei file PDF con i contenuti più vari. Le soluzioni native del Php sono praticamente tutte a pagamento oppure negate per un uso commerciale.
Ecco che viene in aiuto il mondo open-source con due progetti!
Il primo, chiamato FPDF (
http://www.fpdf.org) è una classe che permette tramite semplici comandi di creare un PDF. Nel sito si trovano tutti gli esempi e i tutorial (ce ne sono veramente tanti). Come noterete in questa classe tutto è "cella", cioè per l'inserimento delle tabelle ad esempio tutto deve essere scritto con cura maniacale (questa cella con questo contenuto qui, quest'altra qua di queste dimensioni...).
Perchè non usare un linguaggio conosciuto e semplice come l'HTML?? La risposta ce la dà il secondo progetto, che si basa su FPDF ma si chiama HTML2(F)PDF (
http://html2fpdf.sourceforge.net/) che permette in poche istruzioni di creare un file PDF...scrivendo in html!!
Bene. Ora i test: andate sul sito di html2fpdf e scaricate lo zippone che contiene tutto (dentro c'è anche fpdf). Importantissimo dentro c'è una cartella fonts, NON eliminatela!
Ho creato un semplice file per provare le funzionalità dello script:
<?
require_once("html2fpdf.php");
$html=file_get_contents("filehtml.html");
$pdf=new HTML2FPDF();
$pdf -> AddPage();
$pdf -> WriteHTML($html);
$pdf -> Output ('prova.pdf','I');
?>
In filehtml.html ho scritto il codice da trasformare, ho provato poche cose (ma nel sito c'è la lista completa dei tags supportati): ho provato un
center, un
b (grassetto), e una
immagine. Notate che avrei potuto scrivere il codice HTML direttamente dentro la variabile $html (e quindi non necessariamente leggerlo da un file).
BUG: incredibile a dirsi, ma su linux non supporta i file GIF! Almeno credo su linux, forse anche su windows (sulla mia ubuntu non va, e secondo google tanti hanno questo problema), fate un po' di prove...in sostanza se non trova le immagini contenute nel codice html, carica una immagine no_img.gif, e subito dopo dà errore irreversibile di lettura sulla gif...niente da fare, sostituendo con un'altra gif o cambiando i permessi è sempre uguale...appena ho inserito però una PNG....magia, tutto funziona! Non arrabbiatevi, visto che è gratis: un motivo in più per passare al formato PNG ;-)
Buon php a tutti!