#!/bin/sh
#
# /usr/local/bin/localpdf2pdfscreen
# Copyright 2008 Jonas Smedegaard <dr@jones.dk>
#
# $Id: localpdf2pdfscreen,v 1.5 2008-03-17 13:39:17 jonas Exp $
#
# Downsize PDF file.
#

set -e

PRG="$(basename "$0")"

# Default options
PDFTOPSOPTS="-preload -paper match"
PS2PDFOPTS="-dPDFSETTINGS=/screen"

showhelp() {
	cat <<EOF
Usage:   $PRG INFILE [ OUTFILE ] [ pdftops opts ] [ -- ps2pdf opts ]

Defaults:
    OUTFILE:    INFILE with trailing ".pdf" replaced with "_lowres.pdf".
    pdftops:    $PDFTOPSOPTS
    ps2pdfopts  $PS2PDFOPTS

Examples:
    $PRG newspaper.pdf newspaper_screenready.pdf
    $PRG newspaper.pdf -level3 -- 

EOF
}

exit1() {
	echo >&2 "ERROR: $1"
	exit 1
}

[ $# -gt 0 ] || exit1 "Input file missing"

infile=
outfile=
pdftopsopts=
pstopdfopts=
while [ $# -gt 0 ]; do
	case $1 in
		-h|--help)
			showhelp
			exit 0
			;;
		--)
			shift
			break
			;;
		-*)
			pdftopsopts="$pdftopsopts $1"
			shift
			;;
		*)
			if [ -z "$infile" ]; then
				infile="$1"
			elif [ -z "$outfile" ]; then
				outfile="$1"
			else
				exit1 "Too many parameters"
			fi
			shift
			;;
	esac
done
ps2pdfopts="$@"

# Use defaults if not overridden
outfile="${outfile:-$(basename "$infile" .pdf)_lowres.pdf}"
pdftopsopts="${pdftopsopts:-$PDFTOPSOPTS}"
ps2pdfopts="${ps2pdfopts:-$PS2PDFOPTS}"

[ ! -e "$outfile" ] || exit1 "Output file already exists"

tmpfile=$(mktemp -t "$PRG.XXXXXXXXXX") || exit 1

pdftops $pdftopsopts "$infile" "$tmpfile" || rm "$tmpfile"
ps2pdf $ps2pdfopts "$tmpfile" "$outfile"

rm "$tmpfile"

exit 0