Minska storleken på en PDF med Ghostscript



  • PDF

    Det finns många sätt att komprimera och minska filstorleken på en pdf. Detta är perfekt ifall man vill lagra många dokument på en server där det inte finns obegränsat med utrymme. Jag använder mig av Ghostscript för att lösa detta. Om du kör Gentoo så heter paketet app-text/ghostscript-gpl.

    • Mitt gs_pdf_shrink.sh script
    #!/bin/sh
    
    function gs_pdf()
    {
    	gs -q -dNOPAUSE -dBATCH -dSAFER \
    	-sDEVICE=pdfwrite \
    	-dCompatibilityLevel=1.3 \
    	-dPDFSETTINGS=/screen \
    	-dEmbedAllFonts=true \
    	-dSubsetFonts=true \
    	-dAutoRotatePages=/None \
    	-dColorImageDownsampleType=/Bicubic \
    	-dColorImageResolution=$3	\
    	-dGrayImageDownsampleType=/Bicubic \
    	-dGrayImageResolution=$3 \
    	-dMonoImageDownsampleType=/Bicubic \
    	-dMonoImageResolution=$3 \
    	-sOutputFile="$2" "$1" &> /dev/null
    }
    
    check_smaller ()
    {
    	if [ ! -f "$1" -o ! -f "$2" ]; then
    		return 0;
    	fi
    	ISIZE="$(echo $(wc -c "$1") | cut -f1 -d\ )"
    	OSIZE="$(echo $(wc -c "$2") | cut -f1 -d\ )"
    	if [ "$ISIZE" -lt "$OSIZE" ]; then
    		echo "Input smaller than output, doing straight copy" >&2
    		cp "$1" "$2"
    	fi
    }
    
    in="$1"
    if [ -z "$in" ]; then
    	echo "Usage: $0 infile [outfile] [resolution in dpi]"
    	exit
    fi
    
    if [ ! -z "$2" ]; then
    	out="$2"
    else
    	out="-"
    fi
    
    if [ ! -z "$3" ]; then
    	res="$3"
    else
    	res="100"
    fi
    
    gs_pdf "$in" "$out" "$res" || exit $?
    
    check_smaller "$in" "$out"
    ls -la
    

    Bara att spara ner detta i en fil och köra, happy shrinking 😉 Om ni inte har Linux så finns det online-verktyg för att optimera pdfer med.



Jenkler IT AB org.nr: 559082-6938   073-731 76 64   [email protected]

Ser ut som din anslutning till Jenkler IT AB gick förlorad, vänta medan vi försöker att återansluta.