Il problema e' il seguente: abbiamo un certo numero di cartelle (diciamo... per valori estremamente grandi di "un certo numero"), ognuna contenente dei files .jpg, le scansioni numerate di documenti cartacei particolarmente corposi; ad esempio nella cartella "Manuale" ci sono le scansioni di un manuale di un qualche componente elettronico, 194 pagine perfettamente scansionate, tutte alla stessa risoluzione, e numerate da 001.jpg a 194.jpg.
Per una questione di comodita' si vuole fare in modo che questa astrusa sequenza di file .jpg diventi un file .PDF per ogni cartella, ossia strizzare (metaforicamente, data la dimensione del file risultante) le 194 pagine dell'esempio in un unico file "Manuale.pdf".
L'ipotesi di importare le singole immagini su singole pagine sequenziali di un maxi-documento OpenOffice era quella originaria pensata, ma l'ipotesi e' crollata di fronte alla quantita' non indifferente di lavoro da porsi (qualcosa come 24mila e passa pagine...), ma poi le ricerche hanno dato i loro frutti, ecco come imitarmi quando puo' tornare utile: servono due utilita' ed un piccolo script bash.
Installate ImageMagick (ci serve l'utilita' convert) e un programma che si chiama pdftk (dalla sua pagina di manuale: "If PDF is electronic paper, then pdftk is an electronic staple-remover, hole-punch, binder, secret-decoder-ring, and X-Ray-glasses. Pdftk is a simple tool for doing everyday things with PDF documents."). Sotto Ubuntu Gutsy si risolve dando da shell
sudo apt-get install imagemagick pdftk
oppure selezionando i due pacchetti da Synaptic/Kynaptic/Adept.A questo punto serve uno script, di cui questo e' un esempio:
Possono essere aggiunte diverse variazioni sul tema o diverse modifiche al codice sorgente, ma a grandi linee con questa procedura abbiamo concluso il lavoro suddividendolo su due PC ed in circa quattro ore (wow!)#!/bin/sh
#
# Questo script, lanciato in una cartella che contiene una sequenza ordinata
# di files .jpg genera nella stessa cartella un file .pdf che rispetta la sequenza
#
# NOTA: non sono ammessi spazi nei nomi dei files!
# es. 001.jpg, 002.jpg va bene. "Pagina 001.jpg", "Pagina 002.jpg" no...
#
# Copyright by Grizzly aka Mirko Tuccitto [grizzly@g-sr.eu]
# This programme is free software released under the GNU General Public License v2.0
echo "Conversione delle singole immagini in un unico file .pdf"
echo
# Prima con convert/imagemagick crea un file .pdf per ogni file .jpg
for A in $(ls *.jpg); do
echo -n " > $A"
convert $A $A.pdf
echo ".pdf - ok!"
done
# Poi con pdftk giunta la sequenza di files .pdf in uno solo
echo
echo -n "Creazione di un unico file .pdf "
##### ATTENZIONE ALL'ESTENSIONE *MAIUSCOLA*
pdftk *.pdf cat output COMPLETO.PDF
##### NON CAMBIATE QUESTA RIGA A MENO DI NON COMMENTARE LA FASE DI RIMOZIONE!
echo "- ok!"
# Infine vengono rimossi i files .pdf intermedi
echo -n "Rimozione dei file .pdf intermedi "
##### ATTENZIONE ALL'ESTENSIONE *MINUSCOLA*
rm *.pdf
##### QUESTA FASE E' FACOLTATIVA
echo "- ok!"
# per una questione di pulizia
mv COMPLETO.PDF completo.pdf
A proposito: il visualizzatore di documenti Evince apre i files .pdf anche se sono compressi con gzip o bzip2... ((-:
Il Doctor Evil ne trae insegnamento.
RispondiEliminaComplimenti per la meticolosita' dell'articolo!
RispondiEliminaUno script vale piu' di mille parole :D
Comunque, a parte gli scherzi, dovremmo fare tutti cosi', le conoscenze vanno condivise. Si ci potrebbe tirar su un bel blog dedicato.
Alla prox ;)
Beh, questo e' il primo di diversi articoli che seguiranno su tutta una serie di situazioni a cui sto lavorando (-:
RispondiElimina