pdfimages

前面介紹的 ImageMagick 與 pdftoppm 是將 PDF 檔案的整張頁面轉換為圖檔,但是如果我們想要把 PDF 檔案中所含有的圖片抽取出來,就必須改用 pdfimages 這個指令。

pdfimages 會以 PDF 檔案中的圖片為單位(一張頁面可能會包含好多張圖片),將每一張圖片抽取出來,儲存成個別的圖片檔。基本的使用方式如下:

# 以 pdfimages 抽取 PDF 檔中的圖片
pdfimages -all input.pdf output

轉換出來的結果就會是一張一張個別的圖檔,沒有文字的部份:

抽取的圖檔

pdfimages 預設也是會將圖片儲存成 PPM 圖檔格式,而加上 -all 可以盡量讓圖片儲存成其原始的格式。

選擇部分頁面

如果只想要抽取部分頁面中的圖片,可以使用 -f 參數與 -l 參數分別指定開始的頁碼與結束的頁碼(頁碼從 1 開始),例如:

# 只抽取 PDF 檔中第一頁至第三頁的圖片
pdfimages -f 1 -l 3 -all input.pdf output

列出圖片清單

如果想要先查詢 PDF 檔案中所有的圖片清單,不要馬上輸出圖檔,可以使用 -list 參數:

# 列出圖片清單
pdfimages -list input.pdf
page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image     600   750  index   1   8  image  no        57  0   172   172  192K  44%
   2     1 image     256   256  rgb     3   8  jpeg   no        60  0   153   153 16.1K 8.4%
   2     2 image     256   256  rgb     3   8  jpeg   no        61  0   153   153 29.2K  15%
   2     3 image     256   256  rgb     3   8  jpeg   no        62  0   153   153 30.6K  16%
   2     4 image     256   256  rgb     3   8  jpeg   no        63  0   153   153 16.5K 8.6%
   2     5 image     600   421  icc     3   8  image  yes      149  0   540   539  581K  78%
   4     6 image     449   316  index   1   8  image  no       199  0   214   214 95.4K  69%
   4     7 image     450   316  index   1   8  image  no       200  0   215   215 91.8K  66%
   4     8 image     448   316  index   1   8  image  no       201  0   214   214 90.7K  66%
   8     9 image    1272   768  index   1   8  image  no       411  0   364   364  476K  50%

檔名加上頁碼

由於抽取出來的圖片會以圖片的順序來編號,若想要加上頁碼的資訊,可以使用 -p

# 讓圖片檔名加上頁碼
pdfimages -all -p input.pdf output

GhostScript

GhostScript 也可以將 PDF 檔轉逐頁換為圖片檔,不過它的語法較複雜,我只列出範例給大家參考:

# 使用 GhostScript 將 PDF 檔轉為 JPG 圖片檔
gs -dNOPAUSE -dBATCH -sDEVICE=jpeg -r300 -sOutputFile='page-%00d.jpg' input.pdf

# 使用 GhostScript 將 PDF 檔轉為支援透明度的 PNG 圖片檔
gs -dNOPAUSE -dBATCH -sDEVICE=pngalpha -r300 -sOutputFile='page-%00d.png' input.pdf

在 GNOME 桌面環境中,還有一個 PdfMod 應用程式,也可以將 PDF 檔轉為圖檔,不過他是圖形化介面的程式,有興趣的人可以參考看看。

參考資料:maketecheasierHTG