Esistono molti motivi per cui ci si possa trovare a lavorare con dei moduli: molte aziende hanno bisogno di raccogliere informazioni dai clienti e per farlo sottopongono loro dei moduli. Magari dei moduli PDF modificabili. In questi casi il vantaggio è duplice: gli utenti possono modificarli direttamente dal proprio computer senza bisogno di stamparli e scansionarli; l’operatore riceve il modulo compilato in digitale e potrà così selezionare le risposte dei vari campi del modulo per copiarle e incollarle altrove.
Tuttavia, copiare manualmente ogni singola risposta per tutti gli utenti potrebbe essere fastidioso e frustrante: servirebbe qualcosa per automatizzare questo processo, magari traducendo automaticamente tutte le risposte dell’utente in una comoda tabella CSV (Comma Separated Values, un formato standard per tabelle) che possa poi essere aperta e analizzata con altri programmi come fogli di calcolo e database. Ebbene, su GNU/Linux questo strumento esiste e si chiama pdftk , acronimo di PDF ToolKit , un programma a riga di comando ottimo per automatizzare varie operazioni sui PDF. Nel nostro esempio vedremo come realizzare uno script che consente di estrae automaticamente tutti i valori presenti nei moduli PDF.
La prima cosa da fare è realizzare un modulo PDF con LibreOffice Writer . Mentre si preparano i vari campi, è importante assegnare a ciascuno di essi il nome corretto. LibreOffice ne assegna uno in automatico, ma è possibile modificarlo in modo da renderlo facilmente riconoscibile (per esempio “nome”, “cognome” e così via).
Il modulo PDF così preparato potrà essere compilato dagli utenti usando LibreOffice Writer oppure Adobe Acrobat (che però su GNU/Linux non è molto stabile).
Gli utenti che vogliono modificare il modulo con LibreOffice Writer non devono fare altro che aprire il PDF con questo programma e cominciare a modificare il modulo cliccando sui vari campi. Poi devono esportare il modulo in formato PDF utilizzando il menu File/Esporta nel formato PDF e inviarlo al mittente (a noi che abbiamo sottoposto il modulo) tramite posta elettronica.
Ora sarà possibile estrarre il contenuto del modulo PDF usando il programma pdftk . Come anticipato, il programma è a riga di comando e può essere usato impartendo comandi di questo tipo:
pdftk modulo.pdf dump_data_fields output campi-modulo.txt
Però è abbastanza scomodo, perché offre anche molte informazioni inutili. Per tale motivo abbiamo realizzato uno script che traduce automaticamente il modulo PDF in un file CSV, che potrà poi essere importato in fogli di calcolo o database. Il codice dello script si trova su questa pagina Web .
È possibile scaricare automaticamente lo script sul proprio computer GNU/Linux con i seguenti comandi:
wget -O pdf-to-csv.sh http://pastebin.com/raw/9xhdhBKi
dos2unix pdf-to-csv.sh
chmod +x pdf-to-csv.sh
Chi dispone dei privilegi di amministrazione e può quindi utilizzare sudo , può installare lo script dando questi tre comandi:
sudo wget -O /usr/bin/pdf-to-csv.sh http://pastebin.com/raw/9xhdhBKi
sudo dos2unix /usr/bin/pdf-to-csv.sh
sudo chmod +x /usr/bin/pdf-to-csv.sh
Il vantaggio dell’installazione è che lo script sarà disponibile semplicemente digitando il comando pdf-to-csv.sh in qualsiasi terminale del proprio computer.
Una volta installato (o scaricato) lo script sul PC lo si può utilizzare in questo modo:
pdf-to-csv.sh modulo.pdf modulo.csv V
o in quest’altro modo:
pdf-to-csv.sh modulo.pdf modulo.csv O
La differenza tra i due comandi è che il primo traduce il modulo in una tabella verticale, ovvero una tabella nella quale i vari campi vengono presentati uno sotto l’altro. Il secondo comando, invece, produce una tabella orizzontale, nella quale tutti i campi vengono inseriti in una unica riga ma su più colonne. La tabella verticale è comoda se si intende visualizzare un solo modulo alla volta, mentre quella orizzontale è comoda per inserire automaticamente le informazioni in un database con tanti altri moduli.
Il file CSV prodotto dallo script può essere aperto con LibreOffice Calc : nella finestra di importazione viene chiesto di specificare quale sia il delimitatore dei campi. Tale simbolo è il punto e virgola. Fornita questa informazione, sarà possibile visualizzare i dati del modulo compilato dall’utente sotto forma di foglio di calcolo, dunque con la possibilità di memorizzare e analizzare i vari dati.
Per esempio, una volta aperto il file con LibreOffice Calc basta selezionare le sue caselle e copiarle premendo Ctrl+C . Poi si può aprire LibreOffice Base con il database su cui si sta lavorando e, nella vista delle tabelle, premere Ctrl+V per incollare i dati copiati. Scegliendo l’opzione Aggiungi , i dati copiati verranno aggiunti ad una tabella esistente (il cui nome va specificato nell’apposita casella), in coda a tutti gli altri dati già presenti nella tabella. Affinché il metodo funzioni è necessario che nella tabella di LibreOffice Base non sia presente una chiave primaria (ID). La procedura per l’importazione dei file CSV è dettagliatamente descritta sulla guida ufficiale di LibreOffice .