One day, I send some scanned files in pdf format by email. Due to the large size of those files, the attached files cannot be received in the email sent. This problem disturbed me as I take multidimensional processing course and one of the chapters in the course is about image processing and file compression. After short time searching, I found the very high ratio and fast pdf files compressing from Ubuntu forum.
Here is the code:
*) Please note, that is not my code, but I got it from Ubuntuforum.org
Here is the code:
#!/bin/bash DPI=150 PDF_DESTINATION="" help() { echo "optimize_pdf help" echo "-h : show this help" echo "-d : (optional) output pdf document resolution, by default : 150" echo "-s : pdf source file, this file must exist" echo "-o : pdf output file" } full_path() { if [ -z $1 ]; then exit; else if [ `expr substr ${1:-a} 1 2` != "/" ]; then FULL_FILE=`pwd`"/"$1 fi fi echo $FULL_FILE } isNumeric(){ echo "$@" | grep -q -v "[^0-9]" ;} while getopts "s:o:d:h" flag do case $flag in #Source : source file "s") PDF_FILE=`full_path $OPTARG` if [ ! -e $PDF_FILE ]; then echo "Please provide a valid source file" exit=1 fi ;; #Output : output file "o") PDF_DESTINATION=$OPTARG ;; #Dpi : desired resolution "d") if [ -z `isNumeric $OPTARG` ]; then DPI=$OPTARG else echo "Please provide a numeric value for your DPI" exit=1 fi ;; "h") exit=1 ;; esac done #Is there a target file? if [ -z $PDF_DESTINATION ]; then echo "Please provide a file name for output" exit=1 fi #At least one error, we're not going any further if [ $exit ]; then help exit fi pdftops \ -paper match \ -nocrop \ -noshrink \ -nocenter \ -level3 \ -q \ "$PDF_FILE" - \ | ps2pdf14 \ -dEmbedAllFonts=true \ -dUseFlateCompression=true \ -dOptimize=true \ -dProcessColorModel=/DeviceRGB \ -dUseCIEColor=true \ -r72 \ -dDownsampleGrayImages=true \ -dGrayImageResolution=$DPI \ -dAutoFilterGrayImages=false \ -dGrayImageDownsampleType=/Bicubic \ -dDownsampleMonoImages=true \ -dMonoImageResolution=$DPI \ -dMonoImageDownsampleType=/Bicubic \ -dDownsampleColorImages=true \ -dColorImageResolution=$DPI \ -dAutoFilterColorImages=false \ -dColorImageDownsampleType=/Bicubic \ -dPDFSETTINGS=/prepress \ - "$PDF_DESTINATION"Let's copy that code in /usr/local/bin and save as optimized_pdf.sh or another name. Then try to compress pdf file like in the following,
optimized_pdf.sh -s input_file.pdf -o output_file.pdfwhere input_file.pdf is your current file to be compressed (signed by -s) and output_file.pdf is the new compressed pdf files. When I use this command, I got 300 Kb from 3000 Kb of pdf file size (1/10 of compression ration). That's work for me!
*) Please note, that is not my code, but I got it from Ubuntuforum.org