Bash 将一个pdf文件分成若干个pdf文件,每个pdf文件有n页
我曾尝试制作一个脚本,将单个pdf文件分成每个人的Bash 将一个pdf文件分成若干个pdf文件,每个pdf文件有n页,bash,shell,pdf,Bash,Shell,Pdf,我曾尝试制作一个脚本,将单个pdf文件分成每个人的NUM页面的n部分,但我无法完成该脚本的第二部分(一个周期): 现在我必须做一个循环,将NUM页面合并到单个pdf中,例如,对于NUM=3: pdftk $FILENAME-001.pdf $FILENAME-002.pdf $FILENAME-003.pdf cat output PART-1.pdf pdftk $FILENAME-004.pdf $FILENAME-005.pdf $FILENAME-006.pdf cat output P
NUM
页面的n部分,但我无法完成该脚本的第二部分(一个周期):
现在我必须做一个循环,将NUM
页面合并到单个pdf中,例如,对于NUM=3:
pdftk $FILENAME-001.pdf $FILENAME-002.pdf $FILENAME-003.pdf cat output PART-1.pdf
pdftk $FILENAME-004.pdf $FILENAME-005.pdf $FILENAME-006.pdf cat output PART-2.pdf
...
pdftk $FILENAME-(PAG-2).pdf $FILENAME-(PAG-1).pdf $FILENAME-PAG.pdf cat output PART-X.pdf
然后,对于每个获得的PDF(PART-1.PDF
,PART-2.PDF
,…,PART-X.PDF
),我必须执行如下操作:
pdftops PART-X.pdf PART-X.ps
有人能帮我吗?有几种方法。你可以使用你的知识的页数,然后做数学来构造粘合命令。我会选择一种解决方案,使用肯定存在的文件,并依靠编号为您提供正确的顺序:
NUM=3
pages_done=0
files=''
part=1
for file in ./$FILENAME-*
do
files="$files $file"
(( pages_done++ ))
if [[ $pages_done -eq $NUM ]]
then
echo glue $files into part-$part
pages_done=0
files=''
(( part++ ))
fi
done
# Take care of any dangling files that did not make a group of size NUM
if [[ -n $files ]]
then
echo glue $files into part-$part
fi
我认为在这里进行while循环是最好的选择:
#!/bin/sh
...
#Save pages number of the original pdf
PAG=$(pdftk $FILENAME.pdf dump_data|grep NumberOfPages| awk '{print $2}')
# create parts 'from'-'to' given by NUM
PAG_FROM=1; PAG_TO=$NUM
while [ "$PAG_TO" -le "$PAG" ]; do
FILE_OUT="PART-$(printf %03d $PAG_FROM)-$(printf %03d $PAG_TO)"
pdftk $FILENAME.pdf cat $PAG_FROM-$PAG_TO output $FILE_OUT.pdf
pdftops $FILE_OUT.pdf $FILE_OUT.ps
PAG_FROM=$((PAG_FROM+$NUM))
PAG_TO=$((PAG_TO+$NUM))
done
# execute pdftk on trailing pages
if [ $PAG_FROM -le $PAG ]; then
FILE_OUT="PART-$(printf %03d $PAG_FROM)-$(printf %03d $PAG)"
pdftk $FILENAME.pdf cat $PAG_FROM-$PAG output $FILE_OUT.pdf
pdftops $FILE_OUT.pdf $FILE_OUT.ps
fi
我建议在开始时将FN变量更改为
FILENAME=$(basename$1)
,您可以像这样轻松地触发脚本:
scriptname.sh <name of file>.pdf
scriptname.sh.pdf
我自己测试了一个8页的文件,应该可以正常工作
scriptname.sh <name of file>.pdf