2017-05-05 95 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