PdfToText

L'abbonamento a Linux Journal che ho sottoscritto comprende la possibilità di effettuare il download dei vecchi numeri in formato .pdf.

Mi risulterà difficile leggermi tutti i vecchi numeri, quindi mi piacerebbe poterli usare come 'knowledge base' su cui effettuare delle ricerche quando ne ho bisogno.

Dopo averli scaricati in una directory ho quindi scritto il seguente script che effettua una ricerca, all'interno di essa, di un determinato vocabolo. Ho usato il tool pdftotext che converte un .pdf in .txt

La ricerca del vocabolo avviene solo nelle pagine dalla 4 alla 7, cioè dove è presente di solito il sommario del numero, così da velocizzarla.

Script

#!/bin/bash
# mypdfsearch
# Converte in un file temporaneo testuale dei file .pdf dentro la dir $1
# ed effettua una ricerca di $2

# se la stringa $2 e' vuota stampa l'help
if [ -z $2 ]
   then
      echo "Uso: mypdfsearch Percorso Quello_che_stai_cercando"
      exit 1
fi

echo
echo "Risultati della ricerca:"
echo

FILES="$1/*.pdf"
for file in $FILES
   do
      echo "*****************" $file "*****************"
      # -f <int> : first page to convert
      # -l <int> : last page to convert
      pdftotext -f 4 -l 7 $file output.txt
      # fa l'output delle 5 righe sopra e sotto l'occorrenza
      # trovata; ignora maiusc-minusc
      cat output.txt | grep -C 5 -i $2
      echo
   done

# rimuove file temp
if [ -f output.txt ]
   then
      rm output.txt
fi
exit 0

Esempio

Di seguito un esempio di ricerca nella directory corrente, in cui sono presenti due numeri di LJ, il dlj154.pdf e il dlj155.pdf. Il vocabolo “windows” è stato trovato solo nel sommario del primo numero della rivista, alle pagine indicate.

$ ./mypdfsearch . windows

Risultati della ricerca:

***************** ./dlj154.pdf *****************
62 THE CITADEL GROUPWARE SERVER
Replace Microsoft Exchange.
Jon Watson

52 BREAK THE HARDWARE UPGRADE CYCLE
WITH WIN4LIN WINDOWS VIRTUAL SERVER
Windows on many Linux clients.
Jon Watson

58 ACCESSING LINUX FILESYSTEMS IN WINDOWS
How do you reach Linux filesystems from Windows?
Irfan Habib

***************** ./dlj155.pdf *****************

$ 

Tags:

Add new comment

Filtered HTML

  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <p> <h1> <h2> <h3> <h4> <h5> <div> <pre> <object>
  • You may insert videos with [video:URL]
  • Web page addresses and e-mail addresses turn into links automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
By submitting this form, you accept the Mollom privacy policy.