2009-08-09 30 views
5

我想從X網站保存/下載PDF文件,然後將所有這些PDF文件合併爲一個,這樣我就很容易一次查看所有這些文件。在Linux中使用腳本結合多個pdf文件?

我做了什麼,

  1. 得到網站的PDF文件

    wget的-r -l1 -A.pdf --no父母http://linktoX

  2. 合併的PDF轉換爲一個

    gs -dNOPAUSE -sDEVICE = pdfwrite -sOUTPUTFILE = Combined_ date +%F .pdf -dBATCH file1.pdf file2.pdf file3.pdf

我的問題是,我想在一個腳本中自動完成這一切,所以我不必每天都這樣做。這裏新的pdf是每天在X中添加的。

那麼,如何在不給出所有pdf的完整列表的情況下執行上述第2步,我在步驟2中嘗試了file*.pdf;但它以隨機順序合併所有pdf。

接下來的問題是,文件的* .pdf的總數不一樣每天,有時5個PDF文件有時10 ...但好處是,它是爲了file1.pdf file2.pdf命名...

所以,我需要一些幫助才能完成上述第2步,以便所有pdf都按順序組合,並且我不必明確指出每個pdf的名稱。

謝謝。

UPDATE: 這解決了這個問題

pdftk `ls -rt kanti*.pdf` cat output Kanti.pdf 

我做-rt作爲file1.pdf首先下載,然後file2.pdf等等......只是做LS -t把file20 LS。 pdf在開始和file1.pdf在最後...

回答

3

我以前也用過pdftk,效果很好。所以

ls | sort -n -k 1.$n 

,如果你有文件的* .pdf:

通過這樣的文件名字符1 -

上市按數字順序中的文件,您可以指示排序忽略第一$ N

$ ls | sort -n -k 1.5 
file1.pdf 
file2.pdf 
file3.pdf 
file4.pdf 
file10.pdf 
file11.pdf 
file20.pdf 
file21.pdf 
2

我已經使用pdftk之前這樣的連接,因爲pdftk碰巧可以隨時用於Debian/Ubuntu。

+0

我想按順序合併PDF文件;使用* .pdf以隨機順序組合它...我想按此順序組合file1.pdf ... file9.pdf file10.pdf file11.pdf等等... – 2009-08-09 19:56:58

1

你可以這樣做:

GSCOMMAND="gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=Combined_date +%F.pdf -dBATCH" 
FILES=`ls file*.pdf | sort -n -k 1.5` 

$GSCOMMAND $FILES 

這是假設的文件被命名爲 「file.pdf」。另見alberge的帖子。

它會在名稱中包含空格的文件做一些奇怪的事情,因此如果需要能夠使用空格處理名稱,則需要添加轉義。

我真的很好奇,會想出什麼其他人,因爲這在我看來,相當快速和骯髒的解決方案,但其他人:)

編輯

的答案越來越好感謝

按照alberge的建議,對FILES使用數字排序命令。

相關問題