aboutsummaryrefslogtreecommitdiffstats
path: root/cli/shrinkpdf.sh
diff options
context:
space:
mode:
authorAaron LI <aaronly.me@gmail.com>2016-03-31 10:57:34 +0800
committerAaron LI <aaronly.me@gmail.com>2016-03-31 10:57:34 +0800
commitc9c896dea2ba43551c4e10bd49666105449e9bd7 (patch)
treee94b73f17b2d776c2acd4c9549657f500c3dc7ce /cli/shrinkpdf.sh
parent2b6cb9b655a53d43b32a8a211287c82f4f59999a (diff)
downloadatoolbox-c9c896dea2ba43551c4e10bd49666105449e9bd7.tar.bz2
add all scripts/tools
Diffstat (limited to 'cli/shrinkpdf.sh')
-rwxr-xr-xcli/shrinkpdf.sh56
1 files changed, 56 insertions, 0 deletions
diff --git a/cli/shrinkpdf.sh b/cli/shrinkpdf.sh
new file mode 100755
index 0000000..1190fce
--- /dev/null
+++ b/cli/shrinkpdf.sh
@@ -0,0 +1,56 @@
+#!/bin/sh
+#
+# Shrink the size of PDF files by adjust its quality using gs.
+#
+# Aaron LI
+# 2013/09/18
+#
+
+case "$1" in
+ -[hH]*|--[hH]*)
+ printf "usage:\n"
+ printf " `basename $0` in=<input.pdf> out=<output.pdf> quality=<screen|ebook|printer|prepress> imgdpi=<img_dpi>\n"
+ exit 1
+ ;;
+esac
+
+getopt_keyval() {
+ until [ -z "$1" ]
+ do
+ key=${1%%=*} # extract key
+ val=${1#*=} # extract value
+ keyval="${key}=\"${val}\""
+ echo "## getopt: eval '${keyval}'"
+ eval ${keyval}
+ shift # shift, process next one
+ done
+}
+getopt_keyval "$@"
+
+if [ -z "${in}" ] || [ -z "${out}" ]; then
+ printf "Error: 'in' or 'out' not specified\n"
+ exit 2
+fi
+quality=${quality:-ebook}
+imgdpi=${imgdpi:-120}
+
+printf "# in: ${in}
+# out: ${out}
+# quality: ${quality}
+# imgdpi: ${imgdpi}\n"
+
+gs -dNOPAUSE -dBATCH -dSAFER \
+ -sDEVICE=pdfwrite \
+ -dCompatibilityLevel=1.4 \
+ -dPDFSETTINGS="/${quality}" \
+ -dEmbedAllFonts=true \
+ -dSubsetFonts=true \
+ -dColorImageDownsampleType=/Bicubic \
+ -dColorImageResolution=${imgdpi} \
+ -dGrayImageDownsampleType=/Bicubic \
+ -dGrayImageResolution=${imgdpi} \
+ -dMonoImageDownsampleType=/Bicubic \
+ -dMonoImageResolution=${imgdpi} \
+ -sOutputFile=${out} \
+ ${in}
+