venerdì 5 giugno 2009

Estrarre immagini da file PDF

Recentemente ho avuto necessità di recuperare delle foto che avevo usato in passato per creare un PDF, ma non essendo più in possesso delle immagini originali, l'unica soluzione possibile è stata quella di estrarre tutte le foto dal file PDF stesso.
Fortunatamente Linux ha tutti gli strumenti necessari per svolgere tale compito e nello specifico andremo ad usare: pdfimages, una delle PDF utility fornite dal pacchetto: Poppler-utils, che di norma è già presente in molte distro, ma nel caso così non fosse, sarà sufficiente installarlo attraverso il vostro gestore di pacchetti; ad esempio in Debian e derivate il tutto si risolve con:

# apt-get install poppler-utils [invio]

La velocità e la semplicità d'uso di pdfimages rende l'estrazione di immagini da file PDF un'operazione banale, però prima di iniziare è doveroso ricordare che le immagini estratte verranno salvate nella stessa directory da cui si esegue il comando, per cui è sempre consigliabile creare una cartella di lavoro, dove mettere il file PDF da elaborare e successivamente spostasi nella stessa cartella per eseguire i comandi. Tutto ciò perché altrimenti, al momento dell'estrazione i file immagine creati andrebbero a distribuirsi in tutta la vostra home. A questo punto non ci resta che toccare con mano la potenza di questo tool; con il seguente comando andremo ad estrarre tutte le foto incorporate nel PDF e le salveremo in tutti file che avranno come prima parte del nome: "toonik" seguito da un trattino, da un numero incrementale di tre cifre, un punto ed infine il suffisso del formato.

$ pdfimages file.pdf toonik [invio]

di default pdfimages estrae e salva le immagini in formato PBM (se in scala di grigi) e PPM (se a colori), quindi se vogliamo utilizzare un formato di salvataggio più leggero come il JPEG, dovremo utilizzare lo switch -j in questo modo:

$ pdfimages -j file.pdf toonik [invio]

abbiamo già detto che pdfimages estrae tutte le immagini dal file PDF, ma se noi volessimo estrarre solamente quelle presenti in alcune pagine? Niente paura, possiamo fare anche questo utilizzando le opzioni -f (first) e -l (last) per indicare la prima e l'ultima pagina da processare; quindi, nel caso volessimo ad esempio limitare l'operazione alle pagine: 3, 4 e 5; il comando precedente diventerebbe questo:

$ pdfimages -f 3 -l 5 -j file.pdf toonik [invio]

Infine ricordiamo che con questo tool è possibile lavorare anche su file PDF protetti, basta utilizzare le opzioni -opw o -upw seguite dalla password di protezione.

Ciao e... buona estrazione :-)