Open Source 25 Maggio 2015 giuserpe

pdftotext per convertire un file formato PDF in ODS Calc LibreOffice

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> giuserpe: :%s/\.\([0-9]\)\./\.0\1\./gc (se non ho cannato a scrivere)
<giuserpe> fatto