将每页多张 PDF 转换为每页单张

将每页多张 PDF 转换为每页单张

我岳父通常会预先“预定”他的新闻稿——即两栏,页面位置正确,以便您可以打印和装订新闻稿。不幸的是,本月我们使用的打印机需要未预定的 PDF——每页一页,顺序正确。我可以很容易地重新排序页面,但有没有办法将基本上是两页的 PDF 拆分成页面?

答案1

对于光栅和矢量 pdf 内容,你可以使用我命名的这个脚本洗牌机

用法:

decutshuffler 文件名.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

这个脚本

  1. 以您的 pdf 拼版为 2-up 小册子作为输入

  2. 将源 pdf 拆分为两半,生成一个奇数页的文件和一个偶数页的文件

  3. 混合奇数.pdf甚至.pdf一起排成一列,交替着, 第 1 页,来自 odd第 1 页第 2 页来自 odd第 2 页... 等等...

  4. 最后,它使用一个特殊规则,将文件重新排序为连续顺序,因此页面将改为(对于 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

相关内容