2010-04-08 196 views
3

我將處理通過「合併」多個PDF創建的每個PDF。每個合併的PDF都有PDF部件開始顯示的書籤位置。按書籤拆分PDF?

有沒有什麼辦法可以通過書籤自動將其與腳本分開?

我們只有書籤來指示部分,而不是頁碼,所以我們需要從書籤中推斷頁碼。一個Linux工具將是最好的。

回答

2

您有建立像pdf-split程序,可以爲你做的:

A-PDF分割是一個非常簡單的,閃電般快速的桌面實用程序,讓您分割任何的Acrobat PDF文件轉換成較小pdf文件。它提供了完整的靈活性和用戶控制,包括文件如何拆分以及拆分輸出文件的唯一命名方式。 A-PDF Split爲您的大文件分割提供了多種選擇 - 按頁面,書籤和奇/偶頁面分頁。即使您可以提取或刪除部分PDF文件。 A-PDF拆分還提供了高級定義的拆分,可以保存並稍後導入以便用於重複的文件拆分任務。 A-PDF Split代表了文件分割的靈活性,以適應各種需要。

A-PDF Split與受密碼保護的pdf文件一起工作,並且可以將各種pdf安全功能應用於分割輸出文件。如果需要,您可以使用諸如A-PDF合併器之類的實用工具將生成的拆分文件與其他pdf文件重新組合以形成新的合成pdf文件。

A-PDF拆分不需要Adobe Acrobat,並生成與Adobe Acrobat Reader V5及更高版本兼容的文檔。

編輯*

還發現了一個免費的開源項目Here,如果你不希望支付。

+0

任何Linux程序類似於A-PDF分割的一個? – Jason 2010-04-08 17:10:14

+0

@Jason http://linux.softpedia.com/get/Printing/Pdfsam-40703。shtml這是一個鏈接到pdfsam,但你可以去主頁,我的帖子中的第二個鏈接,這應該是與Linux兼容。 – 2010-04-08 18:01:25

10

pdftk可用於拆分PDF文件並提取書籤的頁碼。

要獲取書籤的頁碼做

pdftk in.pdf dump_data 

,使你的腳本從輸出讀取頁碼。

然後使用

pdftk in.pdf cat A-B output out_A-B.pdf 

獲得從A頁面到B到OUT_A-B.pdf。

該腳本可能是這樣的:

#!/bin/bash 

infile=$1 # input pdf 
outputprefix=$2 

[ -e "$infile" -a -n "$outputprefix" ] || exit 1 # Invalid args 

pagenumbers=($(pdftk "$infile" dump_data | \ 
       grep '^BookmarkPageNumber: ' | cut -f2 -d' ' | uniq) 
       end) 

for ((i=0; i < ${#pagenumbers[@]} - 1; ++i)); do 
    a=${pagenumbers[i]} # start page number 
    b=${pagenumbers[i+1]} # end page number 
    [ "$b" = "end" ] || b=$[b-1] 
    pdftk "$infile" cat $a-$b output "${outputprefix}"_$a-$b.pdf 
done 
+0

好:)我正在使用'grep -A1'^ BookmarkLevel:1'| grep'^ BookmarkPageNumber:''僅獲取頂級書籤。不幸的是,所有較低級別的書籤都會以這種方式丟失...... – 2017-02-20 13:16:54

+0

我只是想提一下,這個bash腳本在macOS Sierra和pdftk上仍能正常工作。做得很好! – 2017-04-03 06:42:56

4

還有用Java編寫的命令行工具,稱爲Sejda在這裏你可以找到splitbybookmarks命令,做你問什麼。它是Java,因此它可以在Linux上運行,並且可以通過編寫腳本來執行該操作。

免責聲明
我是作者