将 PDF 拆分为每页多页的文档

Rap*_*ael 7 scripting pdf split

网络上有多种资源解释了如何将 PDF 拆分为多个文件,每个文件在一页上。

但是你怎么能把它们分成几块,比如每块五页?我已经研究了标准工具,例如pdftk但找不到做我想做的选择。

Rap*_*ael 12

pdftk能够有效地剪切一组固定的页面。用一点脚本胶水,这就是我想要的:

number=$(pdfinfo -- "$file" 2> /dev/null | awk '$1 == "Pages:" {print $2}')
count=$((number / pagesper))
filename=${file%.pdf}

counter=0
while [ "$count" -gt "$counter" ]; do 
  start=$((counter*pagesper + 1));
  end=$((start + pagesper - 1));

  counterstring=$(printf %04d "$counter")
  pdftk "$file" cat "${start}-${end}" output "${filename}_${counterstring}.pdf"

  counter=$((counter + 1))
done
Run Code Online (Sandbox Code Playgroud)

这假设您有每个块的页数$pagesper和源 PDF 的文件名$file

如果你已经acroread安装,你也可以使用

acroread -size a4 -start "$start" -end "$end" -pairs "$file" "${filename}_${counterstring}.ps"
Run Code Online (Sandbox Code Playgroud)

acroread提供-toPostScript可能有用的选项。


Sté*_*las 9

又见pdfseparatepdfunitepoppler-utilspdfseparate将文件每页分成一个文件,这使得以后可以通过pdfunite手动或(半)自动重新组装相对容易。

就像 zsh:

autoload zargs

reunite() pdfunite "$@" file-$1-$argv[-1].pdf

pdfseparate file.pdf p%d
zargs -n 5 p<->(n) -- reunite
rm -f p<->
Run Code Online (Sandbox Code Playgroud)

会分裂file.pdffile-p1-p5.pdf, file-p6-p10.pdf...