Kako smanjiti veličinu .PDF fajla

Problem mi se pojavio kada sam pomoću ImageMagick napravio .PDF fajl, koristeći kao izvor tri skenirana dokumenta veličine A4 formata u .tiff zapisu. Rezultujući .PDF je bio 41MB veličine, što svakako nije pogodno za slanje mailom.

Rešenje sam našao ovde http://rainnic.altervista.org/content/how-reduce-heavy-pdfs.

Poenta je da se .PDF konvertuje u .jpg i da se potom vrati sa smanjenim kvalitetom u .PDF.
Ukoliko želite bolji kvalitet, možete umesto .jpg koristiti .png format.

convert -density 600 -set units PixelsPerInch Dokumenat.pdf doc_%02d.jpg

Opcija -density 600 služi da bi se zadržala gustina od 600 dpi. Rezultat je više .jpg fajlova koji imaju nazive doc_01.jpg, doc_02.jpg…

Sada ih je potrebno ponovo povezati u .PDF komandom:

convert doc_*.jpg -quality 75 -set units PixelsPerInch Dokumenat.pdf

Ukoliko izaberete .png format imaćete i mogućnost isključenja alfa kanala pomoću opcije „-alpha off“.

Rezultat ove akrobacije je bio .pdf fajl veličine samo 1MB 🙂

Advertisements
Објављено у Linux

Izmena veličine svih sličica u folderu na linuxu

Neki dan sam dobio disk sa stotinjak fotografija proizvoda, ali su fotografije bile isuviše velike da bi ih mogao direktno iskoristiti za web prodavnicu. Nekako po navici krenuh da ih učitavam u Gimp i smanjujem ručno. Kako mi je već nakon prve dosadilo, setih se Imagemagick koji me je nedavno spasao muke 🙂

Komanda koju sam u ovom slučaju koristio je „mogrify“. Pored smanjenja/uvećanja fotografija, ova moćna alatka može uraditi još prilično veliki broj modifikacija i transformacija slike, a sve opcije su dobro dokumentovane.

U terminalu sam otvorio folder u kome se nalaze slike i kucao:

mogrify -resize 650x500 *.jpg

u ovom slučaju mogrify smanjuje slike poštujući proporciju, tako da su mi nove slike uglavnom bile 650 x 433 tačaka.
Ukoliko vam je iz nekog razloga potrebno da slike budu tačno 650×500 tačaka, pa makar bile „razvučene“, mogrify može i to. Samo je potrebno dodati uzvičnik 🙂

mogrify -resize 650x500! *.jpg

Izrada .pdf kataloga slika od gomile .jpg sličica

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 🙂