pdfcrop merita - da PDF a ODT
A futura memoria, vale la pena spendere qualche riga che illustri come usare pdfcrop per l'importazione di un elenco prezzi da PDF (Acrobat Portable Document Format) a ODT (OpenOffice/StarOffice OpenDocument (Ver 2) Spreadsheet).
L'intenzione è scomporre il file elenco.pdf in colonne separate (Num.Ord./tariffa, descrizione, unità di misura, prezzo) per poi ricomporre il tutto in un foglio di calcolo editabile.
Agisco come segue:
$/home/giuserpe/Desktop/pdfcrop.pl --verbose -bbox "54 44 100 746" elenco.pdf cod_ep.pdf
In cui --verbose mi serve solo a capire se qualcosa si sta muovendo ed in che verso.
L'opzione -bbox "x1 y1 x2 y2" indica la colonna che voglio isolare, inscritta nel bounding box di coordinate x1,y1 e x2,y2. Questi numeri sono desumibili aprendo elenco.pdf con gsview: si leggono nella forma 54,44pt dalla riga di stato infondo alla finestra del programma, posizionando il cursore nell'angolo in basso a sinistra ed in alto a destra della colonna da isolare.
Elenco.pdf è il file di origine e cod_ep.pdf è il file di destinazione.
Il tutto va fatto per ogni colonna da isolare.
Il passo successivo consiste nell'estrearre il testo dal formato pdf come segue:
$pdftotext cod_ep.pdf cod_ep.txt
A questo punto passo all'uso di vim per manipolare cod_ep.txt ed elimino tutte le ricorrenze del tipo "Nr. 101" in esso contenure, in modo da ottenere un elenco dei soli codici (uno per ogni riga del file), senza ulteriori riferimenti, usando questo comando :%s/\nNr. [0-9]*[0-9] //g
Lo stesso valga per la colonna delle descrizioni e cioè, dopo aver ridotto ad un'unica riga l'intero contenuto del file, posso separare ogni singola descrizione con :%s/euro ([a-z]*\/[0-9]*)/\r/g ottenendo anche in questo file un'unica descrizione per ogni riga.
Il fine ultimo è ottenere un file.txt per ogni colonna dell'elenco prezzi. Ovviamente ogni file txt così ottenuto deve contenere un numero di righe pari al numero delle voci di elenco prezzo.
I files così ottenuti vanno concatenati direttamente in Openoffice.org/Calc così:
<giuSerpe> apri aaa.txt
<giuSerpe> selezioni tutto
<giuSerpe> incolli nella colonna A
<giuSerpe> apri bbb.txt
<giuSerpe> selezioni tutto
<giuSerpe> incolli nella colonna B
Oppure a priori così:
<mrjive> in bash ho fatto cosi'
<mrjive> due file, uno e due
<mrjive> i=0;for line1 in `cat uno`; do UNO[$i]=$line1; i=$i+1; done
<mrjive> j=0;for line2 in `cat due`; do DUE[$j]=$line2; j=$i+j; done
<mrjive> controlli quale dei due ha piu' righe
<mrjive> cat uno| wc -l
<mrjive> 9
<mrjive> nel mio caso il secondo, con 10 righe
<mrjive> k=0; while [ $k -lt 9 ]; do echo ${UNO[$k]} ${DUE[$k]} >> tre; let "k = $k + 1"; done
Oppure così. (cit. mrjive)
Basterà aprire il file risultante con Openoffice.org/Calc.
| Allegato | Dimensione |
|---|---|
| conatenarighe.c | 1022 byte |
- blog di giuserpe
- Aggiungi un commento
- 1284 letture
- Versione stampabile

PDF-Shuffler
Giusto per gradire, il mrjive mi ha segnalato questo link: An easy way to Spilt or Merge PDF Files in Linux
Semplicemente ottimo!
Per farla breve io aggiungo pypdf e pdfshuffler.