Una delle features che molto spesso vengono richieste all’ interno di web application, è la possiblità di poter effettuare delle esportazioni dati, che vanno dai report, dalle tabelle alla compilazione automatica di modulistica. Con la maggior parte dei formati, il modello dell’ esportazione viene definito nel codice dal programmatore, sulla base delle indicazioni del cliente. Il cliente quindi non ha la possibilità di poter modificare autonomamente il modulo da compilare, e ogni modifica richiesta deve essere effettuata dal programmatore. Adobe, con il formato PDF, negli ultimi anni ha introdotto molte novità nella gestione del flusso documentale elettonico. Già dalla versione 1.6, è possibile creare modelli PDF, leggibili da Adobe Reader, contenenti moduli dove l’ utente ha la possibilità di compilare i campi e distribuirlo (via posta elettronica, via fax o stamparlo). In questo post spiegherò quali script PHPsono necessari per riempire dinamicamente un modello PDF da un front-end HTML.

Per creare modelli pdf sono disponibili due prodotti: Adobe Acrobat e Adobe Designer. Il primo, dispone di funzioni base per la creazione di form, mentre il secondo è un applicazione che nasce solo ed esclusivamente per fare quello. Entrambi questi editor permettono di creare dei veri e propri form,  e  come avviene nell’ html, ad ogni campo del modulo si associa un nome univoco. Le informazioni sulla struttura del modello e i dati compilati vengono memorizzati in un file FDF (Form Data Format, formato dati modulo). A partire dalla versione 1.6 dello standard PDF, l’ FDF viene generato sotto forma di file xml, che ora viene nominato XFDF. Le fasi per creare un modulo in Adobe Acrobat sono descritte in questo pdf, tratto dalla documentazione ufficiale di Adobe.

Ottenere il PDF significa quindi fondere assieme il modello con il relativo file FDF.

Adobe mette a disposizione dei programmatori l’ Acrobat Forms Data Format (FDF) Toolkit. Nella documentazione è chiaramente esplicitato che le api messe disposizione non sono in grado di leggere il nuovo formato XFDF, ma solo il formato FDF. Sono supportati ActiveX, Perl, C, Java ma NON il caro PHP.

Una libreria php molto famosa è Pdftk, un toolkit che permette di creare ed editare pdf. Pdftk, attraverso le sue api, è in grado di effettuare il merging tra modello e FDF, generando quindi un nuovo file pdf. Il progetto pare sia fermo dal 2005 e funzionante con lo standard inferiore all’ 1.6. Inoltre la fusione è delegata alla libreria php.

Una soluzione che a mio parere è decisamente migliore è quella di delegare la fusione tra modello e FDF/ XFDF all’ Adobe Reader. I vantaggi che derivano da questa strategia non sono pochi:

  • dobbiamo solo preoccuparci di creare il modello
  • è compatibile con il nuovo formato XFDF
  • qualora cambiasse il formato del Form Data Format (FDF /XFDF), dobbiamo solo modificare lo script che lo genera
  • la fusione è delegata all’ Adobe Reader, che è naturalmente compatibile con tutte le versioni dello standard PDF

Justin Koivisto, sviluppatore Zend certificato, ha realizzato 2 script php in grado di creare sia il file FDF che XFDF,  a partire da un modello pdf esistente. All’ interno del suo sito è possibile trovare un ottimo tutorial: si parte dalla creazione del modello pdf e si termina con un esempio pratico di utilizzo dei 2 script. Il codice dell’ esempio è scaricabile da questo indirizzo. Come è possibile vedere dallo script di esempio, una volta creato il file FDF dal front-end e, aperto con Adobe Reader, quest’ ultimo si aggancierà col modello pdf e lo riempirà con le informazioni contenute nel file FDF. A questo punto basta salvare il documento sulla propria scrivania.

PS: Sono ben accetti commenti, suggerimenti e riscontri, anche su altri metodi utilizzabili

Condividi questo articolo: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • DZone
  • Furl
  • Netvouz
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • TwitThis