Created
September 8, 2015 18:50
-
-
Save andrewgilmartin/9b814c85ab96abe1ba9e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
function split() { | |
file="$1" | |
dir="$2" | |
odd="$3" | |
even="$4" | |
pages=$(/usr/local/bin/pdfinfo "$file" | perl -ne 'print "$1" if /^Pages:\s+(\d+)/') | |
/usr/local/bin/pdfseparate "$file" "$dir/p-%d.pdf" | |
# prepare the list of odd pages in assending | |
for o in $(seq 1 2 $pages) | |
do | |
f="$dir/p-$o.pdf" | |
O="$O $f" | |
done | |
# join the odd pages into one file | |
/usr/local/bin/pdfunite $O "$odd" | |
if [ $((pages % 2)) == 1 ] | |
then | |
# add a blank page to for the "back" of the last page | |
f="$dir/p-blank.pdf" | |
base64 --decode --output "$f" <<EOH | |
JVBERi0xLjMKJcTl8uXrp/Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAErVAgEAAHnAOMKZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjExCmVuZG9iagoyIDAgb2JqCjw8IC9UeXBlIC9QYWdlIC9QYXJlbnQgMyAwIFIgL1Jlc291cmNlcyA2IDAgUiAvQ29udGVudHMgNCAwIFIgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KPj4KZW5kb2JqCjYgMCBvYmoKPDwgL1Byb2NTZXQgWyAvUERGIF0gPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9LaWRzIFsgMiAwIFIgXSA+PgplbmRvYmoKNyAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMyAwIFIgPj4KZW5kb2JqCjggMCBvYmoKKE1hYyBPUyBYIDEwLjkuNSBRdWFydHogUERGQ29udGV4dCkKZW5kb2JqCjkgMCBvYmoKKEQ6MjAxNTA5MDgxNjUwMjFaMDAnMDAnKQplbmRvYmoKMSAwIG9iago8PCAvUHJvZHVjZXIgOCAwIFIgL0NyZWF0aW9uRGF0ZSA5IDAgUiAvTW9kRGF0ZSA5IDAgUiA+PgplbmRvYmoKeHJlZgowIDEwCjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDQ5MiAwMDAwMCBuIAowMDAwMDAwMTI1IDAwMDAwIG4gCjAwMDAwMDAyNjggMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAwMTA3IDAwMDAwIG4gCjAwMDAwMDAyMjkgMDAwMDAgbiAKMDAwMDAwMDM1MSAwMDAwMCBuIAowMDAwMDAwNDAwIDAwMDAwIG4gCjAwMDAwMDA0NTEgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSAxMCAvUm9vdCA3IDAgUiAvSW5mbyAxIDAgUiAvSUQgWyA8ZGFlMDQ3ZjU2ZmRhMjA1ZmViYzNkYmE4NmViNjZlYjg+CjxkYWUwNDdmNTZmZGEyMDVmZWJjM2RiYTg2ZWI2NmViOD4gXSA+PgpzdGFydHhyZWYKNTY0CiUlRU9GCg== | |
EOH | |
E=$f | |
pages=$((pages -1)) | |
fi | |
# prepare the list of even pages in descending/reverse order | |
for e in $(seq $pages -2 2) | |
do | |
f="$dir/p-$e.pdf" | |
E="$E $f" | |
done | |
# join the even pages into one file | |
/usr/local/bin/pdfunite $E "$even" | |
# remove the intermediary files | |
rm -f $O $E | |
} | |
# remove title and printer settings | |
shift 2 | |
for f in "$@" | |
do | |
dir=$(mktemp -d "/tmp/duplex-XXXX") | |
split "$f" "$dir" "$dir/odd.pdf" "$dir/even.pdf" | |
open "$dir/even.pdf" | |
open "$dir/odd.pdf" | |
done | |
# END |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment