TCPDF: una libreria PHP per convertire pagine web in PDF
Attenzione
Questo articolo è stato pubblicato più di un anno fa, potrebbero esserci stati sviluppi.
Ti preghiamo di tenerne conto.
Oggi parliamo di un software che si porta sulle spalle 8 anni di programmazione e maturo al punto di essere utilizzato come default in Joomla, uno dei principali CMS open source usato oggi da milioni di utenti soddisfatti in tutto il mondo.
Chi è abituato a lavorare con Joomla sicuramente conoscerà le icone che (a meno che non siano disabilitate dal tema in uso) appaiono allineate sulla destra di ogni titolo degli articoli. Di solito se ne vedono tre: “PDF“, “Stampa” e “Invia ad un amico“. Le riporto qui sotto.
L’icona “Invia ad un amico” altro non fa che inviare il link alla notizia all’indirizzo mail che inseriremo, l’icona “Stampa” aprirà una pagina correttamente formattata per la stampa, mentre l’icona “PDF” permetterà il download in formato PDF dell’articolo. L’icona “PDF” mi ha sempre incuriosito e così ho indagato un po’.
Per l’esportazione in PDF Joomla si appoggia ad una classe PHP chiamata “TCPDF“. Il progetto “TCPDF” è nato nel 2002 ed ora viene usato da milioni di persone in tutto il mondo, anche grazie alla popolarità che Joomla ha contribuito a costruire. Il software viene rilasciato sotto licenza open source, ed è per questo che viene distribuito come pacchetto integrante di Joomla. Fra i vantaggi indicati dal sito (una lunga lista) possiamo citare:
- non necessita di librerie esterne per il funzionamento,
- supporta i charset “UTF-8“, “Unicode” e “Right-to-left” (scrittura araba),
- supporta nativamente i formati immagine JPG, PNG e SVG, inoltre se usato con le librerie GD o ImageMagick supporta i formati supportati da questi,
- supporta le modalità “Scala di grigi“, “RGB“, “CYMK“, “Spot colors” e le trasparenze,
Per vedere qualche esempio del funzionamento rimando alla pagina “demo” del sito ufficiale.
In conclusione TCPDF è un software a mio avviso non sempre utile. Spesso nei siti personali (ma capita anche in quelli professionali) si tende ad includere qualsiasi tipo di contenuto, anche quelli meno utili come counter accessi, persone online o sondaggi di ogni genere. Teniamo presente che queste informazioni non servono quasi mai agli utenti, poniamoci quindi la questione se includere TCPDF fra i contenuti o se possiamo considerarlo una finezza per pochi.
12 commenti
Roscosbazzeguti · 2 Febbraio 2014 alle 5:22 PM
Non so se è pertinente ma mi sta facendo impazzire….
Ho provato tcpdf e per fare quello che gli esempi fanno funziona benissimo ma per il mio sito interno speravo di fare questo:
Una maschera form con 3-4 campi che una volta compilati invece di spedirmi i dati al data base me li stampi in pdf in una lettera precompilata. Insomma una “specie di stampa unione”.
Mi basterebbe anche solo sapere se si puo fare e al limite vederne un esempi.
Ringrazio tantissimo per l’eventuale disponibilità
Giovanni Mauri · 3 Febbraio 2014 alle 11:37 AM
Purtroppo non ti sono di grande aiuto. “Visitai” questo software anni fa e da allora non ho più rimaneggiato.
Fra gli esempi nel sito ufficiale vedo che ce n’è uno chiamato “forms and javascript” che mi pare faccia quello che chiedi. In ogni caso ti consiglio di contattare uno degli sviluppatori (http://www.tecnick.com), ti sarà sicuramente di maggiore aiuto.
Perdona la domanda, ma stai creando un gestionale da zero?
Roscosbazzeguti · 5 Febbraio 2014 alle 10:53 AM
Allora l’esempio che dici tu crea un PDF editabile con dei campi da compilare (se non mi sbaglio).
Mentre, per l’ultima domanda, volevo fare un form, per il sito interno al mio ufficio, che compilato, mi creava un PDF di una domanda di ferie/malattia con i dati di chi la compila (e il PDF mi serviva per chi, e ce ne sono, vogliono conservarsi il documento).
Grazie comunque (ho già tutto mi manca la creazione del pdf dalla lettere in html)
Giovanni Mauri · 6 Febbraio 2014 alle 5:44 PM
Non potresti salvare i campi in un database e ripescarli con tcpdf?
Roscosbazzeguti · 10 Febbraio 2014 alle 9:22 AM
Ho provato a usare tcpdf con altri database per vedere come funzionava ma mi sa che il meccanismo mi sfugge completamente( non riesco a farlo funzionare) e siccome memorizzare i dati che mi servono in stampa non mi servono memorizzati in quanto “usa e getta” cmq diciamo che risolverò facendo stampare con PDF creator quello che viene a video.
Grazie lo stesso
Powerpad · 27 Dicembre 2013 alle 6:05 PM
Noi con powerpad abbiamo integrato iText® XMLWorker che ci consente di creare edizioni PDF dei contenuti presenti sui siti web dei nostri clienti. La pagine html generata dal portale LAMP viene convertita da un servizio rest java/jboss che utilizza le librerie di itext.
Giovanni Mauri · 4 Gennaio 2014 alle 9:08 AM
Purtroppo non ho mai avuto il piacere di provare Powerpad, il CMS che lei reclamizza. Sarà sicuramente un prodotto originale, interattivo e performante, ma la prerogativa del blog (a parte poche rarissime eccezioni) è l’open source.
Sarei lieto di scrivere una recensione su Powerpad, se ne rilasciaste pubblicamente il codice sorgente.
Una domanda: non sono un esperto di licenze, ma vedo che iText è rilasciato sotto la AGPL. Leggo su wikipedia “Il codice da fornire non sarà solo quello coperto da AGPL, ma anche tutti i moduli da esso utilizzati”. Questo secondo lei include anche Powerpad?
davideatflickr · 22 Aprile 2011 alle 3:18 PM
pdflib http://www.pdflib.com/ 😀
TheJoe · 22 Aprile 2011 alle 1:17 PM
Beh, dipende da cosa devi fare.. tu cos’hai trovato di commerciale?
davideatflickr · 22 Aprile 2011 alle 10:45 AM
è solo una curiosità lato prestazionionale 😀
c’è qualcosa di meglio ma con licenza commerciale purtroppo : (
TheJoe · 22 Aprile 2011 alle 10:19 AM
In realtà poco cambia fra le due librerie.. fanno più o meno la stessa cosa..
Come licenza sono entrambi open source, inoltre fpdf è liberamente redistribuibile come “appendice” ad applicazioni anche di tipo commerciale.
Se poi vogliamo dire tutta la verità entrambe le librerie sono sviluppate dalla stessa persona: Olivier Plathey, che ha preferito rilasciare il “motore” (fpdf) sotto licenza BSD (o simili) perché avesse un’espansione maggiore, mentre per i bugfix e le nuove feature ha creato un progetto open source tutto nuovo (tcpdf) utilizzabile e ridistribuibile solo su progetti altrettanto open source.
davideatflickr · 22 Aprile 2011 alle 9:14 AM
la proverò, ho sempre usato fpdf http://www.fpdf.org/
questo sembra un buon sostituto.. 🙂