Estimated read time: 2 minutes
Yesterday I wanted to print a PDF document: two pages per sheet, and of course I wanted duplex printing as well (on the short side).
Given that the hardware (the printer) was not capable of duplex printing, I needed some software workaround. If you want one page per sheet, this is trivial, as the print dialog of any PDF reader will let you select "odd pages", then you re-feed the printer with the output paper and you select "even pages" and that’s it.
OTOH, if you want 2 pages per sheet, then first you need some trick first to create two PDF from the original: the first containing the pages 1, 2, 5, 6, etc. - and the other containing 3, 4, 7, 8, etc.
After all this isn’t really hard using pdftk
. First, the input PDF was
around 150 pages, so I wanted to split the input to one file / page:
pdftk in.pdf burst output out/%03d.pdf
Then let’s move the pages to the subdirs a
or b
, based on the above
pattern:
cd out mkdir a b for i in *.pdf do base=$(basename $i .pdf) if [ $base -lt 100 ]; then rem=$(($(echo $i|sed 's/^0\+\(.*\)\.pdf/\1/')%4)) else rem=$(($base%4)) fi if [ "$rem" = 1 -o "$rem" = 2 ]; then mv $i a else mv $i b fi done
Finally concat the files from the a
and the b
dir to a single file:
cd a
pdftk *.pdf cat output ../a.pdf
cd ../b
pdftk *.pdf cat output ../b.pdf
That’s it!