#!/bin/bash function help () { echo "Usage: $0 []" echo "Takes a pdf file, removes any vertical scanner lines, and outputs it as output.pdf if not otherwise specified" echo " -e remove lines on even pages. First page is page 0 (even)" echo " -o remove lines on odd pages. First page is page 0 (even)" echo " -a remove lines on all pages" echo " -c increase contrast of pdf file" echo " -h display this output" exit 1 } while getopts 'eoaclh' opt ; do case "$opt" in # v) verbosity=VERBOSE ;; # q) verbosity=QUIET;; e) even='true';; o) odd='true';; a) even='true'; odd='true';; c) contrast='true';; h) help ;; esac done input_file=${@:$OPTIND:1} output_file=${@:($OPTIND +1):1} output_file=${output_file:-'output.pdf'} if [ -z "$input_file" ]; then help fi tmp_dir=$(mktemp -d -t processor-images-XXXXX) pdfimages -j "$input_file" "$tmp_dir/page" for file in "$tmp_dir"/page-*.jpg do filename="${file##*/}" page_nr="${filename:5:3}" page_nr=$(echo $page_nr | sed 's/^0*//') # Remove leading zeros if [ -z "$page_nr" ] then page_nr=0 fi echo "Pagenr: $page_nr" if [ "$contrast" = 'true' ] then echo "Increase contrast" mogrify -level 25% $file fi page_even='true'; [ $((page_nr%2)) -eq 1 ] && page_even='false' if ( [ "$page_even" = 'true' ] && [ "$even" = 'true' ] ) || ( [ "$page_even" = 'false' ] && [ "$odd" = 'true' ] ) then echo Remove line mogrify -morphology bottomhat "1x100:0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0" -negate $file fi done convert $tmp_dir/page-*.jpg "$output_file" rm -rf $tmp_dir echo "Done! Saved output to $output_file"