使用PDFTK将PDF拆分为多个页面?

Oat*_*oat 5 pdf powershell merge split pdftk

我发现很难说出这个问题而无法找到我正在尝试做的事情的在线解决方案.

我知道如何使用以下脚本使用PDFTK将大型PDF拆分为单个页面:

pdftk your_file.pdf burst output your_directory/page_%02d.pdf
Run Code Online (Sandbox Code Playgroud)

但现在我希望每次到PDF拆分其他页面,让每一个新的PDF有两个(2)页面(例如网页1 + 2在一起,3 + 4页一起,5 + 6等).

我知道Acrobat会像冠军那样做,但我需要一些我可以从Powershell执行的东西.

我对替代方案/解决方法持开放态度,比如单个页面并在单次爆发后将它们组合成两个.

小智 7

这个PowerShell脚本会

  1. 使用pdftk获取页数
  2. 循环步骤构建范围字符串
  3. 使用范围将页面提取为新的pdf,其附加范围为基本名称(并存储在同一文件夹中).

更改前两个变量以适合您的环境.

## 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
}
Run Code Online (Sandbox Code Playgroud)

编辑使用可变页面集并正确处理悬垂.
再次编辑:找到一种更简单的方法来缩短最后一组页面.

样本输出

> .\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
Run Code Online (Sandbox Code Playgroud)


And*_*dio 5

您可以使用sejda-console,它是AGPLv3下的开源软件,可以从项目GitHub页面下载。

您可以使用以下splitbyevery命令

每隔'n'页分割给定的PDF文档,每隔n'页创建文档。

在这种情况下,命令行如下所示:

sejda-console splitbyevery -n 2 -f /tmp/input_file.pdf -o /out_dir