104 lines
1.9 KiB
Bash
104 lines
1.9 KiB
Bash
# https://askubuntu.com/a/1360466
|
|
|
|
# remove pages by range: 1-2,3,5,6-8
|
|
# what about 1-2,4,2-4
|
|
# what about 1,1
|
|
# landscape/portrait option to pdfnup
|
|
# outfile
|
|
# tempfile name (default: ./.temp.pdf)
|
|
# infile
|
|
# inplace (in which case CROPPED,INFILE,OUTFILE would be same
|
|
# margin (single val or ltrb)
|
|
# ie, 10
|
|
# 10 15 10 15
|
|
# number of pages (default 2x1)
|
|
#
|
|
# getopt input.pdf output.pdf [--landscape]
|
|
|
|
#INFILE="in.pdf"
|
|
#CROPPED="cropped.pdf"
|
|
#OUTFILE="outnx1.pdf"
|
|
#pdfcrop --margins 10 $INFILE $CROPPED
|
|
#./pdfnup --nup 2x1 $CROPPED -o $OUTFILE --landscape
|
|
|
|
DEBUG=
|
|
|
|
# Handle optional arguments
|
|
LANDSCAPE=
|
|
PAGES=
|
|
CROPPED=./cropped.pdf
|
|
SELECTED=./selected.pdf
|
|
LAYOUT="2x1"
|
|
GETARGS=$(getopt -o 'r:o::' -l 'margins:,pages:,layout:,landscape::' -- $@) || exit
|
|
eval "set -- $GETARGS"
|
|
|
|
while true; do
|
|
case $1 in
|
|
(--margins)
|
|
MARGINS=$2
|
|
shift 2;;
|
|
(--layout)
|
|
LAYOUT=$2
|
|
shift 2;;
|
|
(--pages)
|
|
PAGES=$2
|
|
shift 2;;
|
|
(--landscape)
|
|
LANDSCAPE=1
|
|
shift 2;;
|
|
(--)
|
|
# opt args parsed
|
|
shift
|
|
break;;
|
|
*)
|
|
echo "Uh-oh.. Something went wrong.."
|
|
exit 1;
|
|
esac
|
|
#shift 2
|
|
done;
|
|
|
|
echo "REMARGS: $@"
|
|
|
|
function echoyn {
|
|
if [ $1 ]; then
|
|
echo $1
|
|
else
|
|
echo "N"
|
|
fi
|
|
}
|
|
|
|
if [ $# -lt 2 ]; then
|
|
echo "Not enough positional args"
|
|
exit 1
|
|
fi
|
|
|
|
INFILE=$1
|
|
OUTFILE=$2
|
|
|
|
# select: in ->
|
|
# crop: ->
|
|
# layout: -> out
|
|
|
|
# Use only selected pages if needed if needed
|
|
if [ $PAGES ]; then
|
|
gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sPageList=$PAGES -sOutputFile=$INFILE $SELECTED > /dev/null
|
|
else
|
|
SELECTED=$INFILE
|
|
fi
|
|
|
|
# Crop if needed
|
|
if [ $MARGINS ]; then
|
|
pdfcrop --margins $MARGINS $SELECTED $CROPPED
|
|
else
|
|
CROPPED=$SELECTED
|
|
fi
|
|
|
|
if [ $LANDSCAPE ]; then
|
|
./pdfnup --nup $LAYOUT $CROPPED -o $OUTFILE --landscape
|
|
else
|
|
./pdfnup --nup $LAYOUT $CROPPED -o $OUTFILE
|
|
fi
|
|
|
|
# Clean up
|
|
rm -f $CROPPED $SELECTED
|