#!/bin/bash # It crops and converts the pdf file into pdf file, # HIRES="%%HiResBoundingBox" # HIRES="%%BoundingBox" E_BADARGS=1 while getopts ":rh" opt; do case $opt in r) if [ "${OPTARG:0:1}" = "-" ]; then echo "Invalid parameter \"${OPTARG}\" provided for agurment \"-${opt}!\"" hflag=1 else # echo "-n was triggered! Parameter: $OPTARG" >&2 rflag=1 fi ;; h) if [ "${OPTARG:0:1}" = "-" ]; then echo "Invalid parameter \"${OPTARG}\" provided for agurment \"-${opt}!\"" hflag=1 else # echo "-h was triggered! Parameter: $OPTARG" >&2 hflag=1 fi ;; \?) echo "Invalid option: -$OPTARG" >&2 hflag=1 E_BADARGS=65 ;; :) echo "Option -$OPTARG requires an argument." >&2 hflag=1 E_BADARGS=65 ;; esac done shift $(($OPTIND - 1)) function help { echo -e "Usage: \t$0 [-r] " echo -e "This script generates the zero-margin cropped version of the input pdf file with suffix -crop." echo -e "Option -r: if this option is specified, the input file is replaced by the cropped version." } if [ "$#" -lt 1 ] || [ "$hflag" ]; then help exit $E_BADARGS fi EXT=$(echo "${1##*.}" | awk '{print tolower($0)}') if [ "${EXT}" != "pdf" ]; then echo "Ops! No pdf file!" help exit $E_BADARGS fi basename=$(basename ${1} .pdf) dirname=$(dirname ${1}) echo "Cropping $1 ..." if [ "$rflag" == "1" ]; then pdfcrop -hires "${dirname}/${basename}.pdf" "${dirname}/${basename}-crop.pdf" echo "${dirname}/${basename}-crop.pdf -> ${dirname}/${basename}.pdf" mv -f "${dirname}/${basename}-crop.pdf" "${dirname}/${basename}.pdf" else pdfcrop -hires "${dirname}/${basename}.pdf" "${dirname}/${basename}-crop.pdf" fi # BBOX=$(gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=bbox $(basename ${a} .pdf)".pdf" 2>&1 | awk '$1 ~ /'${HIRES}'/ {printf "%s %s %s %s", $2, $3, $4, $5}' ) # gs -sOutputFile=$(basename ${a} .pdf)"-crop.pdf" \ # -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 \ # -dNOPAUSE -dBATCH \ # -c "[/CropBox [${BBOX}] /PAGES pdfmark" \ # -f $(basename ${a} .pdf)".pdf"