diff --git a/bin/pdfcompress b/bin/pdfcompress index d63e5f7..c7417e6 100755 --- a/bin/pdfcompress +++ b/bin/pdfcompress @@ -3,18 +3,18 @@ set -euo pipefail function show_usage { - cat <<-END - usage: $0 [OPTIONS...] input_file output_file + cat <<-END + usage: $0 [OPTIONS...] input_file output_file - Converts a PDF file to a series of JPEG images using convert to - reduce the quality and then merges back the result in a single pdf + Converts a PDF file to a series of JPEG images using convert to + reduce the quality and then merges back the result in a single pdf - options: - -q, --quality Set the JPEG quality (default: 75) - -v, --verbose Enable verbose output - -h, --help Display this help message + options: + -q, --quality Set the JPEG quality (default: 75) + -v, --verbose Enable verbose output + -h, --help Display this help message END - exit 1 + exit 1 } quality=75 @@ -22,33 +22,33 @@ verbose=false while [[ $# -gt 0 ]] do - key="$1" - - case $key in - -q|--quality) - quality="$2" - shift # past argument - shift # past value - ;; - -v|--verbose) - verbose=true - shift # past argument - ;; - -h|--help) - show_usage - ;; - -*) - echo "Unknown option: $key" - show_usage - ;; - *) - break - ;; - esac + key="$1" + + case $key in + -q|--quality) + quality="$2" + shift # past argument + shift # past value + ;; + -v|--verbose) + verbose=true + shift # past argument + ;; + -h|--help) + show_usage + ;; + -*) + echo "Unknown option: $key" + show_usage + ;; + *) + break + ;; + esac done if [ -z "$1" ] || [ -z "$2" ]; then - show_usage + show_usage fi input_file="$1" @@ -57,9 +57,9 @@ output_file="$2" temp_pages_dir="$(mktemp -d)" function logf { - if [ "$verbose" = true ]; then - printf "$@" - fi + if [ "$verbose" = true ]; then + printf "$@" + fi } logf "Converting \"$input_file\" to \"$output_file\"\n" @@ -70,18 +70,18 @@ logf "Processing $page_count pages\n" start=$(date +%s.%N) for i in $(seq 0 $((page_count-1))); do - iter_start=$(date +%s.%N) + iter_start=$(date +%s.%N) - convert -density 300 -quality "$quality" "${input_file}[$i]" "$temp_pages_dir/$i.jpg" + convert -density 300 -quality "$quality" "${input_file}[$i]" "$temp_pages_dir/$i.jpg" - # Compute estimated remaining time - end=$(date +%s.%N) - elapsed=$(echo "$end - $start" | bc) - iter_elapsed=$(echo "$end - $iter_start" | bc) - remaining=$(echo "($elapsed / ($i + 1)) * ($page_count - $i)" | bc) - remaining_fmt=$(printf "%02d:%02d:%02d" $((remaining/3600)) $((remaining/60)) $((remaining%60))) + # Compute estimated remaining time + end=$(date +%s.%N) + elapsed=$(echo "$end - $start" | bc) + iter_elapsed=$(echo "$end - $iter_start" | bc) + remaining=$(echo "($elapsed / ($i + 1)) * ($page_count - $i)" | bc) + remaining_fmt=$(printf "%02d:%02d:%02d" $((remaining/3600)) $((remaining/60)) $((remaining%60))) - logf "Compressed page $((i+1)) in $(printf '%.2f' "$iter_elapsed")s (estimated remaining time $remaining_fmt)\n" + logf "Compressed page $((i+1)) in $(printf '%.2f' "$iter_elapsed")s (estimated remaining time $remaining_fmt)\n" done logf "Merging compressed pages to a single PDF\n"