#!/usr/bin/env bash
##
################################################################################
##
##  pdfjam-pocketmod: A shell program to make an 8-page PDF document
##  into an 8-up file with pages ordered and oriented for folding as
##  a pocket-sized booklet, as described at http://repocketmod.com/
##
##  (c) 2019: David Firth (http://go.warwick.ac.uk/dfirth, original author)
##  License: GPL (https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt)
##
##  This is a simple wrapper for (three runs of) pdfjam, version N.NN
##
##
##  It's hard (?) to set up this particular script to read from /dev/stdin,
##  so we'll just insist that the first argument is a file:
##
################################################################################
##
E_USAGE=64           ##  for a command line usage error
for arg
do
    case $arg in
	--batch)
	    printf "pdfjam-pocketmod ERROR: the --batch option is not allowed\n" 1>&2 ;
	    exit "$E_USAGE" ;;
	--no-tidy)
	    n='--no-tidy' ;;
	--quiet | -q)
	    q='-q' ;;
	--vanilla)
	    v='--vanilla' ;;
	--checkfiles)
	    c='--checkfiles' ;;
	*)
	    ;;
    esac
done
##
sourceFile="$1" ;
shift ;
##
################################################################################
##
##  Some (very) minimal checking of the first argument:
##
if test ! -f "$sourceFile" ;
then
    printf "pdfjam-pocketmod ERROR: first argument must be a PDF file\n" ;
    exit $E_USAGE ;
fi
##
##  That's all the argument checking!
##
################################################################################
##
pageSpec="1-8"            ## the default page spec
case ${1} in
    --* | "")             ## no page spec was given
	;;
    *)                    ## a page spec was given, so use it
	pageSpec="$1" ;
	shift ;;
esac
pdfjam $n $q $c $v -o /dev/stdout "$sourceFile" "$pageSpec" | pdfjam --angle 180 $n $q $v -o /dev/stdout /dev/stdin '1,8,7,6' | pdfjam --nup 4x2 --landscape --frame true  "$sourceFile" '2-5' /dev/stdin -o "${sourceFile%.*}_pocketmod.pdf"

