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

Un commento su “pdftotext per convertire un file formato PDF in ODS Calc LibreOffice”

  1. 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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

CAPTCHA ImageChange Image