2009年12月6日 星期日

在 Linux 系統上面合併多個 PDF 檔案成為一個 PDF 檔案

今天臨時興起想要去複習一下 Advanced Linux Programming 這本相當不錯的電子書
於是就把網頁上面的 PDF 檔案都下載回電腦裡面
這時候突然覺得要這樣分別開啟多個 PDF 檔案實在是麻煩
於是在網路上面找了一些方法
第一個方法是利用 ImageMagick 這個套件裡面的 convert 指令
$ convert alp-toc.pdf alp-ch*.pdf alp-ap*.pdf alp-index.pdf alp.pdf
不過製作出來的 alp.pdf 品質感覺不是很好
第二個方法是用 ghostscript 的 gs 指令
$ gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=alp.pdf -dBATCH alp-toc.pdf alp-ch*.pdf alp-ap*.pdf alp-index.pdf
製作出來的 alp.pdf 品質不錯,不過花了不少時間
第三個方法是用 pdftk 這個套件當中的指令 pdftk
$ pdftk alp-toc.pdf alp-ch*.pdf alp-ap*.pdf alp-index.pdf cat output alp.pdf
這個方法比之前的方法都要來的快速~
另外有網友提到可以使用看看 pdfsam 因為有太多相依上的套件要額外安裝就沒有想要繼續試下去啦~ :P

2 則留言:

Y. Chao 提到...

除了轉檔品質跟轉檔時間外,小弟有興趣的是轉出的檔案大小。另外,convert的backend應該就是gs吧?

$4 提到...

檔案大小 pdftk > convert > gs
不清楚 convert 的 backend 是否為 gs
不過看起來似乎是 convert 會先把 pdf 內容轉成圖案再轉成 pdf
而 gs 似乎會對內容做額外的壓縮處理所以檔案最小
pdftk 看起來只是單純地將 pdf 串接在一起
所以檔案的大小跟原本那些檔案大小的加總差不多