From a52ed01ed875104ed030d8c6d4fd56e72bee64fd Mon Sep 17 00:00:00 2001 From: dabruh <11458706-dabruh@users.noreply.gitlab.com> Date: Fri, 21 Oct 2022 21:45:44 +0200 Subject: [PATCH] Initial version --- .local/bin/compresspdf | 71 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100755 .local/bin/compresspdf diff --git a/.local/bin/compresspdf b/.local/bin/compresspdf new file mode 100755 index 0000000..cbee058 --- /dev/null +++ b/.local/bin/compresspdf @@ -0,0 +1,71 @@ +#!/bin/bash + +# compresspdf +# Version: 0.1.0 +# Author: dabruh +# GitLab: https://gitlab.com/dabruh +# GitHub: https://github.com/dabruh +# +# Simply compress a PDF + +SCRIPT_NAME="$(basename -- "$0")" +FORCE=false + +function usage() { + echo "Usage: $SCRIPT_NAME [OPTIONS]" + echo + echo "Options:" + echo " -h Display help." + echo " -i [FILE] Input file." + echo " -o [FILE] Output file." + echo " -f Overwrite existing output file." +} + +while getopts ":i:o:fh" arg; do + case $arg in + i) INPUT_FILE_PATH="$(realpath "$OPTARG")" ;; + o) OUTPUT_FILE_PATH=$OPTARG ;; + f) FORCE=true ;; + h) + usage + exit 0 + ;; + :) + echo "$SCRIPT_NAME: Must supply a value with -$OPTARG." >&2 + usage + exit 1 + ;; + ?) + echo "Invalid option: -${OPTARG}." + echo + usage + exit 2 + ;; + esac +done + +if [ -z "$INPUT_FILE_PATH" ]; then + echo "$SCRIPT_NAME: Missing mandatory option -i." >&2 + usage + exit 3 +elif [ -z "$OUTPUT_FILE_PATH" ]; then + INPUT_FILE_DIR="${INPUT_FILE_PATH%/*}" + INPUT_FILE_FULL_NAME="${INPUT_FILE_PATH##*/}" + INPUT_FILE_NOEXT_NAME="${INPUT_FILE_FULL_NAME%.*}" + INPUT_FILE_EXT="${INPUT_FILE_PATH##*.}" + OUTPUT_FILE_PATH="$INPUT_FILE_DIR/$INPUT_FILE_NOEXT_NAME-min.$INPUT_FILE_EXT" +fi + +if [ -f "$OUTPUT_FILE_PATH" ]; then + echo "File exists: $OUTPUT_FILE_PATH" >&2 + + if $FORCE; then + echo "Removing: $OUTPUT_FILE_PATH" >&2 + rm "$OUTPUT_FILE_PATH" || exit 11 + else + exit 12 + fi +fi + +gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -dNOPAUSE -dQUIET -dBATCH -sOutputFile="$OUTPUT_FILE_PATH" "$INPUT_FILE_PATH" || exit 21 +echo "$OUTPUT_FILE_PATH"