Split PDF by multiple pages using PDFTK?
我很难说出这个问题,也找不到在线解决方案来解决我的问题。
我知道如何使用以下脚本使用PDFTK将大PDF拆分为单个页面:
1 | pdftk your_file.pdf burst output your_directory/page_%02d.pdf |
但是现在我想按每隔一页拆分PDF,以便每个新的PDF具有两(2)页(例如,第1 2页合在一起,第3 4页合在一起,第5 6页等)。
我知道Acrobat就像冠军一样,但是我需要可以从Powershell中执行的东西。
我乐于接受其他选择/解决方法,例如将单页打印成单页后将其合并为两个。
此PowerShell脚本将
更改前两个变量以适合您的环境。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ## Q:\\Test\\2017\\05\\06\\Split-Pdf.ps1 $pdfPath = 'Q:\\Test\\2017\\05\\06\' $pdfFile = Join-Path $pdfPath"test.pdf" $SetsOfPages = 3 $Match = 'NumberOfPages: (\\d+)' $NumberOfPages = [regex]::match((pdftk $pdfFile dump_data),$Match).Groups[1].Value "{0,2} pages in {1}" -f $NumberOfPages, $pdfFile for ($Page=1;$Page -le $NumberOfPages;$Page+=$SetsOfPages){ $File = Get-Item $pdfFile $Range ="{0}-{1}" -f $page,[math]::min($Page+$SetsOfPages-1,$NumberOfPages) $OutFile = Join-Path $pdfPath ($File.BaseName+"_$Range.pdf") "processing: {0}" -f $OutFile pdftk $pdfFile cat $Range output $OutFile } |
经过编辑,可处理可变的页面集并正确处理突出部分。
再次编辑:找到了一种更简单的方法来缩短最后一组页面。
样本输出
1 2 3 4 5 6 | > .\\Split-Pdf.ps1 10 pages in Q:\\Test\\2017\\05\\06\\test.pdf processing: Q:\\Test\\2017\\05\\06\\test_1-3.pdf processing: Q:\\Test\\2017\\05\\06\\test_4-6.pdf processing: Q:\\Test\\2017\\05\\06\\test_7-9.pdf processing: Q:\\Test\\2017\\05\\06\\test_10-10.pdf |
您可以使用
您可以使用
Splits a given PDF document every 'n' pages creating documents of 'n'
pages each.
在这种情况下,命令行如下所示:
我发现Szakacs Peter的解决方案很棒,但是bash脚本需要进行三处调整:从
为我解决此问题的最终bash脚本是:
1 2 3 4 5 6 | #!/bin/bash COUNTER=1 while [ $COUNTER -lt $NUMBEROFPAGES ]; do pdftk in.pdf cat $COUNTER-$(($COUNTER+1)) output out$COUNTER.pdf let COUNTER=COUNTER+2 done |
然后将其另存为
运行它
您可以使用cat关键字从所需页面生成文件。
1 2 | pdftk in.pdf cat 1-2 output out1.pdf pdftk in.pdf cat 3-4 output out2.pdf |
可以添加bash脚本以便于使用:
1 2 3 4 5 6 | #!/bin/bash COUNTER=0 while [ $COUNTER -lt $NUMBEROFPAGES ]; do pdftk in.pdf cat $COUNTER-$COUNTER+1 output out1.pdf let COUNTER=COUNTER+2 done |
布拉德·史密斯(Brad Smith)的脚本很好,但是无法以这种形状工作。当您未定义$ NUMBEROFPAGES时,脚本将引发错误
1 2 3 4 5 6 7 8 | #!/bin/bash FILE='in.pdf' COUNTER=1 NUMBEROFPAGES=`pdftk $FILE dump_data |grep NumberOfPages | awk '{print $2}'` while [ $COUNTER -lt $NUMBEROFPAGES ]; do pdftk $FILE cat $COUNTER-$(($COUNTER+1)) output out$COUNTER.pdf let COUNTER=COUNTER+2 done |