Salve! :)
Ho realizzato un semplice script per estrarre immagini da un file pdf e traformarle nel formato jpg
Mi sono servito di due tool, Pdfimages e convert.
E' necessario installarli; perciò apriamo il terminale e digitiamo
$ sudo apt-get install imagemagick poppler-utils
A proposito di Pdfimages, dovete sapere che se si aggiunge lo switch "-j", esso estrarrà le immagini e li convertirà, in automatico, nel formato jpg; ma non è sempre così.
Infatti nel suo man si legge:
"-j Normally, all images are written as PBM (for monochrome images)
or PPM (for non-monochrome images) files. With this option,
images in DCT format are saved as JPEG files. All non-DCT
images are saved in PBM/PPM format as usual."
Ragion per cui ho ritenuto opportuno aggiungere, nello script, il comando convert, che mi rende la vita molto più semplice e sorridente :D
Aspettate! Prima di procedere con il post, non posso non ricordare Lui, il grande Lightuono (qui), amico caro. Il caro Light mi ha dato alcune dritte preziose, che saranno debitamente menzionate nel corpo dello script.
Sempre a proposito del caro Light, vi annuncio che ci stiamo organizzando per la realizzazione di un progetto. E' una sorpresa; perciò non aggiungo altro. :D Vi dico solo di aspettarvi, su questo blog, qualcosa di ... :D
Passiamo allo script
#!/bin/bash
#autor: Bit3lux
#name: estrai immagini da pdf in formato jpg
lunghezza=${#1}
if [ $# -gt 1 ]; then
echo -e "Devi passare un solo file\n\n"
exit 1
fi
if [ ${1:$lunghezza-4} != ".pdf" ]; then
echo -e "Devi inserire un file PDF\n\n"
exit 1
fi
#crea una cartella
mkdir $1_immagini
#estrai le immagini del pdf nella cartella creata.
pdfimages -j $1 $1_immagini/Immagine
#converti eventuali immagini ppm in jpg
convert $1_immagini/*.ppm $1_immagini/Immagine.jpg
#cancella eventuali immagini ppm
rm $1_immagini/*.ppm
exit 0
Copiate il corpo dello script (il testo in blu) su un file di testo, salvatelo e nominatelo estrai.sh
Mettete il file (estrai.sh) nella cartella Documenti. Cartella in cui devono essere presenti i pdf da cui si vuole estrarre le immagini in jpg.
Aprite il terminale e spostatevi nella cartella documenti
$ cd Documenti
da qui diamo i permessi allo script per renderlo eseguibile; perciò digitiamo
$ sudo chmod +x estrai.sh
Poi, restando sempre nella cartella documenti, lanciamo lo script
$ ./estrai.sh nomefile.pdf
Esempio:
Voglio estrarre le immagini dal file guida.pdf, contenuto nella cartella documenti.
Mi sposto in quella cartella con
$ cd Documenti
e lancio lo script
$ ./estrai.sh guida.pdf
In questo modo, nella directory Documenti, verrà creata una cartella che conterrà le immagini.jpg estratte dal pdf.
P.S. Può succedere, in rari casi, che nel terminale ricevete qualche segnale di errore, non preoccupatevi e aspettate che lo script completi il suo lavoro. :))
Ciao :)
Molto carino e utile! :)
RispondiEliminaCome primo controllo non sarebbe male verificare che venga passato un parametro:
if [ $# -eq 0 ]; then
echo -e "Devi passare un file!\n\n"
exit 1
fi
Altrimenti in output ti dice vita morte e miracoli di Pdfimages più l'output di errore di convert ecc.
Ed aspetto trepidante l'annuncio del progetto :D
@Mattux
RispondiEliminaGrazie di cuore. :D Correggo immediatamente. Ciao :)
Mitico Bit3...!!
RispondiElimina;)
Ma si può fare molto di più :). Esempio:
RispondiElimina1. Trasformare questo script monofile in multifile.
2. Impedire di eseguire il file come utente ROOT
3. Verificare che il parametro passato effettivamente è un file e non una directory, link, etc..
4. Prima di cancellare i file, verificare con una domanda se sul serio si vuole cancellare quei file indicando anche la posizione in cui vi trovate.
Come vedete molte altre cose si possono fare :)
@Lightuono
RispondiEliminaCerto! Scommetto che alcuni punti ti sono pure sfuggiti, vero? :D :D
Aldo D'Offizi
:D :D :D
guide sempre utili, grazie bit :D
RispondiElimina@picchiopc
RispondiEliminaGrazie a te, caro Picchio :)