#/bin/bash -x usage() { echo "Depends on: xpdf-utils, xpdf-reader, netpbm and djvulibre-bin " 2>&1 echo "Usage: $(basename $0) [-f first_page] [-l last_page] [-r90|-r180|-r270] [-d dpi] input.pdf output.djvu" 2>&1 echo "Whether it results in different size pages force resolution (-d)" 2>&1 } while getopts "r:f:l:d:" flag; do case "$flag" in r) case "$OPTARG" in 90) FLIPOPT=-rotate90;; 180) FLIPOPT=-rotate180;; 270) FLIPOPT=-rotate270;; *) usage; echo "Option -r incorrect" 1>&2; exit;; esac;; f) PDFOPT="$PDFOPT -f $OPTARG";; l) PDFOPT="$PDFOPT -l $OPTARG";; d) RESOPT="-r $OPTARG";; *) usage; exit;; esac done shift $((OPTIND - 1)) if [[ $# != 2 ]]; then usage; exit fi INPUT="$1" OUTPUT="$2" TMPDIR=$(mktemp -t -d pms2d.XXXXXXXXXX) trap "rm -rf \"$TMPDIR\"; exit" INT TERM EXIT if [[ -n "$RESOPT" ]]; then pdftoppm $PDFOPT $RESOPT -mono "$INPUT" "$TMPDIR"/img else pdfimages $PDFOPT "$INPUT" "$TMPDIR"/img fi for img in $(ls "$TMPDIR"/img*.pbm); do if [[ ! -z $FLIPOPT ]]; then pnmflip $FLIPOPT "$img" > "$TMPDIR"/tmp mv "$TMPDIR"/tmp "$img" fi cjb2 "$img" "$TMPDIR"/$(basename "$img" .pbm).djvu rm "$img" done djvm -c "$OUTPUT" "$TMPDIR"/*.djvu