2017-05-05 134 views
1

我发现很难说这个问题,我花了一个多小时在网上搜索我想要做的事情。使用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中执行。我愿意接受替代方案/解决方案,比如采用单页并在单次爆破后将它们合并为两个。

回答

1

这PowerShell脚本将

  1. 使用PDFTK得到的页面
  2. 循环的赭在两个步骤中建立一个范围字符串
  3. 使用该范围将页面提取为新的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" 
} 

编辑与变量集的页面来工作,并妥善处理好悬。
再次编辑:发现一个更简单的方法缩短最后一组页面。

+0

谢谢!它每2页分割一次文档。出于好奇,这可以修改为动态定义页面号码拆分? – OatMaGoat

+0

应该没问题,我会在一分钟内编辑答案。将var'$ SetsOfPages'编辑为所需的大小。 – LotPings

+0

此外,一个小问题,我注意到,如果原始pdf是奇数页,它看起来像丢弃了最后一页。 – OatMaGoat

0

您可以使用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 
1

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

可以使用splitbyevery命令,它

每拆分“N”页面创建“N”每个 页的文件给定的PDF文档。

在你区分命令行将会是这样的:

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

+0

谢谢你的不同选择。我会联系我的IT部门并研究一下。 – OatMaGoat