Danas sam slao neke fotografije svojih proizvoda zapakovane u .zip fajl, međutim primaocu to nije odgovaralo, te me je, zarad lakše preglednosti, zamolila da slike spakujem u jedan .pdf fajl. Kako sam tek tri meseca definitivno prešao na Linux, još uvek neke osnovne stvari nisam naučio, niti rešio, pa sam se dao u razmišljanje. Neka prva ideja mi je bila da napravim .pdf u Libre Office Writeru i čak sam krenuo da ju realizujem. Kod četvrte slike sam skontao da će pravljenje kataloga od par stotina sličica da mi oduzme prilično vremena, pa sam se odlučio napraviti skript za to.
Malo sam istraživao i ubrzo otkrio genijalnu alatku ImageMagick. To je alatka koja omogućuje nebrojeno mnogo manipulacija sa slikama i konverzija formata iz komandne linije i time je idealan za skripte. Oduševilo me je što je izrada .pdf fajla od foldera sa .jpg fajlovima krajnje jednostavna:
convert *.jpg katalog.pdf
i to je to. Ova komanda će od svih slika napraviti .pdf, u kom će svaka slika biti jedna strana.
Kako mi to nije bila osnovna ideja, morao sam malo pročitati uputstvo. Moja konačna komandna linija je:
montage +frame -pointsize 48 -label "%f" -tile 4x4 -geometry 500x500+15+15 *.jpg katalog.pdf
Komanda montage kombinuje više slika u jednu izlaznu. Parametri imaju sledeća značenja:
+ frame => ubacuje okvir oko slike
-tile 4×4 => označava da će se izlazna slika sastojati od mreže koja sadrži 4×4 ulazne slike
-geometry 500×500+15+15 => označava da će svaka sličica u mreži biti 500 x 500 px i da će imati marginu od 15 x 15 px sa strane
-label „%f“ => definiše da će ispod svake slike biti ispisan naziv fajla
-pointsize 48 => definiše veličinu fonta kojim će biti ispisan naziv
Ova komanda mi je dala rezultat baš kao što sam želeo, međutim konačni .pdf je bio prevelik, te sam se dao u potragu za načinom da ga smanjim. Na netu sam našao blogpost koji je naveo skriptu koja mi je u potpunosti odgovarala. Malo sam ju modifikovao, tako da sam kao konačnu verziju:
#!/bin/bash
FILENAME=`basename $1`
DIRNAME=`dirname $1`
OUTNAME=opt_$FILENAME
montage +frame -pointsize 48 -label "%f" -tile 4x4 -geometry 500x500+15+15 *.jpg $1
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=$OUTNAME $1
rm $DIRNAME/$1
mv $DIRNAME/$OUTNAME $DIRNAME/$1
Ovoj skripti proslđujem naziv izlaznog .pdf fajla i ona odrađuje sve 🙂