Discutendone con Bart, siamo inciampati in un file che, nonostante l’uso di pdfcrop, non produceva le righe/colonne che ci aspettavamo: siamo saltati direttamente a pdftotext che è più veloce ed efficace.
$ pdftotext -x 54 -y 100 -W 70 -H 686 input.pdf otput.txt
Dove: -x indica il numero di pixel dalla sinistra della pagina, -y indica il numero di pixel dall’alto della pagina, -W e -H rispettivalemte la largezza e l’altezza in pixel del box da ritagliare, a partire dalla posizione -x -y già indicata.
Naturalmente l’output.txt è già in formato ASCII, quindi, a seconda dell’impostazione del suo contenuto, potrebbe essere necessario elaborare ancora con vim oppure semplicemente incollare in Calc LibreOffice.
Un esempio di regexp
/euro ([a-z]*\/[[0-9]*)
<die_z> :%s/.[0-9]./ciaociao/gc
<die_z> (la c fa sì che vim chieda conferma a ogni sostituzione)
<die_z> giuserpe: il ‘.’ che hai scritto è un ‘.’ letterale o sta per “qualsiasi carattere”?
<giuserpe> die_z: letterale
<die_z> giuserpe: allora intanto “escappalo” \.[0-9]\.
<die_z> altrimenti ti trova anche ?4_ con quella regex
<die_z> giuserpe: poi cosa devi fare?
<giuserpe> io faccio :%s\.[0-9]\./connonsocosa/g
<giuserpe> die_z: devo aggiungere uno ZERO
<giuserpe> \.ZERO[0-9]\.
<die_z> giuserpe: nelle regex puoi “marcare” parti del match tra () e poi “riusarle” con \1 \2 \3
<giuserpe> die_z: tradotto?
<die_z> giuserpe: quindi la regex di ricerca diventa \.\([0-9]\)\. e quella di sostituzione diventa \.0\1\.
<die_z> (la c fa sì che vim chieda conferma a ogni sostituzione)
<die_z> giuserpe: il ‘.’ che hai scritto è un ‘.’ letterale o sta per “qualsiasi carattere”?
<giuserpe> die_z: letterale
<die_z> giuserpe: allora intanto “escappalo” \.[0-9]\.
<die_z> altrimenti ti trova anche ?4_ con quella regex
<die_z> giuserpe: poi cosa devi fare?
<giuserpe> io faccio :%s\.[0-9]\./connonsocosa/g
<giuserpe> die_z: devo aggiungere uno ZERO
<giuserpe> \.ZERO[0-9]\.
<die_z> giuserpe: nelle regex puoi “marcare” parti del match tra () e poi “riusarle” con \1 \2 \3
<giuserpe> die_z: tradotto?
<die_z> giuserpe: quindi la regex di ricerca diventa \.\([0-9]\)\. e quella di sostituzione diventa \.0\1\.
<die_z> giuserpe: :%s/\.\([0-9]\)\./\.0\1\./gc (se non ho cannato a scrivere)
<giuserpe> fatto
<giuserpe> fatto
Per isolare le voci cerco una match string tipo: “Diconsi Euro Ventiquattrovirgolanovantasei a corpo”.
Uso questo comando per sostituire tutta la riga ad escluzione dell’ultima parola, che isolo con un TAB, con la match string “GIUSERPE”:
:%s/Diconsi Euro .* \(.*\)$/\t\1GIUSERPE/g
elimino gli a capo con:
:%s/\n/ /g
ottenendo una sola riga di tutto il documento.
Inserisco gli a capo con:
:%s/GIUSERPE /\r/g