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 檔轉為圖檔,不過他是圖形化介面的程式,有興趣的人可以參考看看。
參考資料:maketecheasier、HTG
1 則自動引用通知