Skip to content

Instantly share code, notes, and snippets.

@W-Floyd
Created October 20, 2021 23:08
Show Gist options
  • Save W-Floyd/27e490adf54ad65b87c718314870175f to your computer and use it in GitHub Desktop.
Save W-Floyd/27e490adf54ad65b87c718314870175f to your computer and use it in GitHub Desktop.
#!/bin/bash
# split-pdf.sh <INPUT.pdf> <END_PAGE>
if [ -d "${1%.*}" ]; then
rm -r "${1%.*}"
fi
mkdir "${1%.*}"
__interval_size=20
__range_start=1
__coverpage='true'
if [ "${__coverpage}" == 'true' ]; then
__range_start="$((__range_start + 1))"
fi
__range_end="${2}"
if [ -z "${__range_end}" ]; then
__range_end="$(pdftk "${1}" dump_data | grep NumberOfPages | sed -e 's/.* //')"
fi
__stub_size="$(((1 + __range_end - __range_start) % __interval_size))"
__bulk_size="$((1 + __range_end - __range_start - __stub_size))"
(
if [ "${__coverpage}" == 'true' ]; then
echo "$((__range_start - 1))-$((__range_start - 1))"
fi
seq "${__range_start}" "${__interval_size}" "$((__range_start + __bulk_size - 1))" | while read -r __num; do
echo "${__num}-$((__num + __interval_size - 1))"
done
if ! [ "${__stub_size}" == 0 ]; then
echo "$((__range_start + __bulk_size))-${__range_end}"
fi
) | while read -r __range; do
{
pdftk "${1}" cat "${__range}" output "${1%.*}/${__range}.pdf"
echo "${1%.*}/${__range}.pdf"
} &
done
wait
exit
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment