-
Notifications
You must be signed in to change notification settings - Fork 0
/
make-booky
executable file
·37 lines (33 loc) · 1.07 KB
/
make-booky
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/bash
# requirements: ghostscript, imagemagick, tiff2pdf (libtiff-tools)
cwd="$PWD"
input="$1"
filename="$(basename "$input")"
tmpdir="/tmp/make-booky-$RANDOM"
mkdir $tmpdir
cp "$input" "$tmpdir"
cd $tmpdir || exit 1
ghostscript -sDEVICE=jpeg -r256 -o page-%d.jpeg "$filename"
rm "$filename"
number_of_pages="$(($(find . | wc -l) - 1))"
# if number_of_pages is odd
if ((number_of_pages % 2)); then
echo "making page 1 a loose leaf"
mv page-1.jpeg bind-0.jpeg
for i in $(seq 2 $((number_of_pages))); do
mv page-"$i".jpeg page-"$((i - 1)).jpeg"
done
number_of_pages=$((number_of_pages - 1))
fi
end=$((number_of_pages / 2))
for i in $(seq 0 $((end - 1))); do
page=$((i + 1))
echo "binding page $page"
convert -quality 100 "page-$page.jpeg" "page-$((number_of_pages - i)).jpeg" +append "bind-$page.jpeg"
jpegoptim --all-progressive -v --strip-all --max=100 --preserve "bind-$page.jpeg"
done
#tiffcp -c lzw bind-*.tiff bound.tiff
#tiff2pdf -o "$filename.booky.pdf" bound.tiff
output="${filename%%.pdf}.booky.pdf"
convert -quality 100 bind-*.jpeg "$output"
cp "$output" "$cwd"