使用PDFTK分割多页PDF?
问题描述:
我发现很难说这个问题,我花了一个多小时在网上搜索我想要做的事情。使用PDFTK分割多页PDF?
我知道如何将一个大的PDF分成单页与PDFTK使用下面的脚本:
pdftk your_file.pdf burst output your_directory/page_%02d.pdf
但现在我希望每次其他页面的PDF分裂,使每个新PDF有两(2)页(例如页面1 + 2在一起,页面3 + 4在一起,5 + 6等)。
我知道Acrobat这样做就像一个冠军,但我需要的东西,我可以从PowerShell中执行。我愿意接受替代方案/解决方案,比如采用单页并在单次爆破后将它们合并为两个。
答
这PowerShell脚本将
- 使用PDFTK得到的页面
- 循环的赭在两个步骤中建立一个范围字符串
- 使用该范围将页面提取为新的pdf附加到基本名称的范围(并存储在同一个文件夹中)。
更改前两个变量以适合您的环境。
## Q:\Test\2017-05\06\Split-Pdf.ps1
$pdfPath = 'Q:\Test\2017-05\06\'
$pdfFile = "$pdfPath\test.pdf"
$SetsOfPages = 3
$Match = 'NumberOfPages: (\d+)'
$NumberOfPages = [regex]::match((pdftk $pdfFile dump_data),$Match).Groups[1].Value
"$NumberOfPages Pages in $pdfFile"
for ($Page=1;$Page -le $NumberOfPages;$Page+=$SetsOfPages){
[String]$Range = "$page-$([math]::min($Page+$SetsOfPages-1,$NumberOfPages))"
$OutFile = (Get-Item $pdfFile).BaseName+"_$Range.pdf"
pdftk $pdfFile cat $Range output (Join-Path $pdfPath $OutFile)
"$Range $OutFile"
}
编辑与变量集的页面来工作,并妥善处理好悬。
再次编辑:发现一个更简单的方法缩短最后一组页面。
答
您可以使用cat关键字从所需页面生成文件。
pdftk in.pdf cat 1-2 output out1.pdf
pdftk in.pdf cat 3-4 output out2.pdf
bash脚本可以按顺序加入更容易使用:
#!/bin/bash
COUNTER=0
while [ $COUNTER -lt $NUMBEROFPAGES ]; do
pdftk in.pdf cat $COUNTER-$COUNTER+1 output out1.pdf
let COUNTER=COUNTER+2
done
谢谢!它每2页分割一次文档。出于好奇,这可以修改为动态定义页面号码拆分? – OatMaGoat
应该没问题,我会在一分钟内编辑答案。将var'$ SetsOfPages'编辑为所需的大小。 – LotPings
此外,一个小问题,我注意到,如果原始pdf是奇数页,它看起来像丢弃了最后一页。 – OatMaGoat