LiveDocx: template based document generation
Martedì 9 Marzo 2010 - 08:16
di Alessandro Nuzzo

Mi capita spesso di dover generare dinamicamente dei file PDF o DOC.
Alla ricerca di una soluzione che mi facilitasse il lavoro mi sono imbattuto in LiveDocx, un servizio basato su SOAP che permette di generare dei documenti partendo da dei template creati con un word processor.
Solitamente quando devo generare dei PDF utilizzo 2 approcci: o l’“HTML-to-PDF Approach” oppure il “Programmatic Approach”.
Nel primo caso si genera dinamicamente un HTML e lo si da in pasto ad una libreria che creerà il file PDF. È un approccio facile da implementare ma che va bene per layout semplici, poiché la maggior parte delle librerie ha dei limiti sulla struttura dell’HTML di partenza.
Il secondo approccio invece offre un controllo totale sul file generato, ma richiede un lungo lavoro per definire le coordinate di ogni singolo elemento; oltretutto, qualora il designer modificasse il layout del PDF, il programmatore dovrebbe rimettere mano al codice.
LiveDocx propone un approccio alternativo: partendo da un file di template generato da un word processor permette di generare non solo un file PDF, ma anche file in altri formati come DOCX, DOC e RTF.
LiveDocx si può usare direttamente utilizzando il SoapClient di PHP 5 e la libreria NuSOAP oppure il componente all’interno dello Zend Framework.
Bastano 3 semplici passi:
- creare il nostro template attraverso un programma di word processor definendo dei merge fields
- si popola dinamicamente il template con i nostri dati
- si crea il file nel formato a noi più comodo, PDF, DOCX, DOC, HTML, RTF, TXT, BMP, GIF, JPG, PNG, TIFF o WMF
Ecco le poche righe per generare il file con lo Zend Framework:
$phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
$phpLiveDocx->setUsername('username')
->setPassword('password');
$phpLiveDocx->setLocalTemplate('template.docx');
$phpLiveDocx->assign('software', 'Magic Graphical Compression Suite v1.9')
->assign('licensee', 'Henry Döner-Meyer')
->assign('company', 'Co-Operation')
->assign('date', 'January 11, 2010')
->assign('time', 'January 11, 2010')
->assign('city', 'Berlin')
->assign('country', 'Germany');
$phpLiveDocx->createDocument();
$document = $phpLiveDocx->retrieveDocument('pdf');
file_put_contents('document.pdf', $document);
Oltre a delle semplici variabili, nel template possiamo utilizzare anche array associativi, in modo che il sistema iteri su più elementi, grazie ai merge block.
Il componente di LiveDocx nello Zend Framework è distribuito tramite Free BSD License, ma il LiveDocx SOAP server è proprietario. Se si decide di utilizzare questa libreria in produzione si può scegliere tra 3 soluzioni:
- free public server: è sicuramente l’approccio più utilizzato. È completamente gratuito ed offre tutte le funzionalità; è il server di default nel componente nello Zend Framework
- hosted solution: se è necessario creare centinaia di documenti al giorno, si può pensare di pagare una piccola fee per avere accesso ad un LiveDocx server personale
- fully-licensed: come ultima opzione è possibile avere uno o più LiveDocx server direttamente nella propria rete. E’ una soluzione adatta per gestire l’acquisto dei biglietti di una compagnia aerea, la generazione di fatture di una compagnia telefonica oppure per gestire applicazioni che hanno un alto traffico di dati sensibili, come informazioni finanziare o mediche
E voi che libreria utilizzate per generare PDF?
Categoria: PHP e Open Source | Permalink
Commenti
1
L’ultima volta che ho avuto questa necessità, ho usato UFPDF, però volevo cambiare-riscriverla perché come qualità del codice fa abbastanza schifo…
# - postato da davide - 09 Marzo 2010 - 09:31
2
Il primo passo mi è un po’ oscuro. Cosa sono i merge fields? Con quali word processor si possono creare?
# - postato da Andrea - 09 Marzo 2010 - 13:37
3
con Word, come puoi vedere da qui: http://www.livedocx.com/pub/do.....lates.aspx
# - postato da Alessandro Nuzzo - 09 Marzo 2010 - 13:49
4
Uhm… ma io Word non ce l’ho. Non è che magari la stessa cosa si può fare con altri word processor? Altrimenti è inutile usare sempre la parola word processor nell’articolo: scriviamo Microsoft Word e amen.
# - postato da Andrea - 09 Marzo 2010 - 14:17
5
@ Andrea
concordo con te.
Perchè non si parla mai dei file .ODT?
6
in effetti si può creare un template anche utilizzando Openoffice
# - postato da Alessandro Nuzzo - 09 Marzo 2010 - 14:51
7
Azzo, che grande news!
8
Abolire i docx?…..No,eh?
# - postato da Ratamusa - 10 Marzo 2010 - 09:16







