Мой тесть обычно создает свои новостные рассылки, предварительно «забронированные», то есть две колонки со страницами в нужном месте, так что вы можете распечатать и сшить эту новостную рассылку. К сожалению, в этом месяце мы используем принтер, который хочет незарезервированный PDF - по одной странице на страницу в правильном порядке. Я могу достаточно легко переупорядочить страницы, но есть ли способ взять PDF, который по сути состоит из двух страниц, и разделить страницы?
1 ответ
и для растрового, и для векторного PDF-контента вы можете использовать этот мой скрипт, который я назвал decutshuffler
использование:
decutshuffler filename.pdf
#!/bin/bash
#a script that takes a 2-up booklet, cut in half the two halves, mix together one by one the pages from odd and even resulting pdf and finally reorder pages in sequential order
filename=$1
w="$(pdfinfo $filename | grep "Page size" | cut -d x -f1 | tr 'Page size:' ' ' | xargs)"
h="$(pdfinfo $filename | grep "Page size" | cut -d x -f2 | tr 'pts' ' ' | xargs)"
halfw="`echo "scale=0; $w / 2" | bc -l`"
pages="`pdftk $filename dump_data output |grep Pages|cut -f2 -d :`"
sed -e "s/$w $h/$halfw $h/g"<$filename>even.pdf
sed -e "s/0 0 $w $h/$w 0 $halfw $h/g"<$filename>odd.pdf
rule="$(for i in `seq 1 $pages`; do echo -n "A$i B$i "; done)"
pdftk A=even.pdf B=odd.pdf cat $rule output interleaved.pdf
doubled="`echo "scale=0; $pages * 2" | bc -l`"
pages4="`echo "scale=0; $doubled / 2" | bc -l`"
deshuf="$(for ((x=$doubled, y=1;x>=$pages4, y<=$pages4;x--, y++)); do echo "$x $y "; done |awk '{ print ; getline ; print $2, $1 }' | tr ' ' '\n' | cat -b | sort -n +1 -2| cut -f1 | tr '\n' ' '| xargs)"
pdftk interleaved.pdf cat $deshuf output deshuffled.pdf
pdftk deshuffled.pdf output fixed.pdf && mv fixed.pdf deshuffled.pdf
echo "file created!"
echo $pages
echo $deshuf
echo "halfw is $halfw"
exit 0
этот скрипт
принимает ваш PDF наложенный как буклет из двух страниц в качестве входных данных
разбить исходный pdf на две половины, создав файл с нечетными страницами и файл с четными страницами
- http://ge.tt/5IFrNiR/v/4 (odd.pdf)
- http://ge.tt/5IFrNiR/v/3 (even.pdf)
смешайте odd.pdf и even.pdf в один файл, поочередно беря страницу 1 из нечетного, страницу 1 из четного, страницу 2 из нечетного, страницу 2 из четного... и так далее ...
наконец, он по специальному правилу переупорядочивает файл в последовательном порядке, поэтому страницы должны быть вместо (для буклета длиной 16 страниц)
16 1 2 15 14 3 4 13 12 5 6 11 10 7 8 9
расположены последовательно в естественном порядке:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16