pdftoppm

pdftoppm 是 Linux 系統上專門用來將 PDF 檔案轉為圖檔的工具,轉檔速度比 ImageMagick 更快,效果也很相當不錯。其基本使用方式為:

# 使用 pdftoppm 將 PDF 檔轉為 JPG 圖片檔
pdftoppm -r 300 -jpeg input.pdf output

其中 -r 參數可用來指定每英寸點數(dpi),而 -jpeg 是指定輸出圖檔格式為 JPG,這裡的輸出檔名不需要寫副檔名,pdftoppm 會以使用者指定的輸出檔名,再加上自動的編號與副檔名來產生每一頁的圖檔名稱,把 PDF 的每一頁各儲存成一張圖檔。轉出來的結果會像這樣:

pdftoppm 將 PDF 轉 JPG 圖檔

輸出圖檔格式

pdftoppm 這個工具在轉換 PDF 檔案時,若不指定輸出檔案格式的話,它會將 PDF 的頁面轉為 PPM 這種圖檔格式:

# 預設會轉換為 PPM 圖片檔
pdftoppm -r 300 input.pdf output

但 PPM 這種圖檔格式比較不常用,通常我們都會加上一些參數,輸出比較常用的圖檔格式,除了 JPG 之外,它還支援 PNG 與 TIFF 等格式:

# 轉換為 PNG 圖片檔
pdftoppm -png -r 300 input.pdf output

# 轉換為 TIFF 圖片檔
pdftoppm -tiff -r 300 input.pdf output

選擇部分頁面

pdftoppm 支援好幾種頁面選擇方式。-f 參數與 -l 參數可以分別用來指定開始的頁碼與結束的頁碼(頁碼從 1 開始),例如:

# 只抽取 input.pdf 的第二頁到第五頁,轉為 JPG 檔
pdftoppm -jpeg -r 300 -f 2 -l 5 input.pdf output

也可以使用 -o-e 參數分別指定奇數頁與偶數頁:

# 只抽取 input.pdf 的奇數頁,轉為 JPG 檔
pdftoppm -jpeg -r 300 -o input.pdf output

# 只抽取 input.pdf 的偶數頁,轉為 JPG 檔
pdftoppm -jpeg -r 300 -e input.pdf output

若只需要轉換 PDF 檔的單一頁,可以加上 -singlefile 參數,這樣的話輸出檔名就不會加上任何編號:

# 只轉換第一頁,輸出檔名不加編號
pdftoppm -jpeg -r 300 -singlefile input.pdf output

# 只轉換第三頁,輸出檔名不加編號
pdftoppm -jpeg -r 300 -f 3 -singlefile input.pdf output

指定解析度

若要直接指定輸出圖檔的解析度,可以使用 -scale-to 參數,它可以讓使用者指定輸出圖檔的長邊長度,而比較短的那一邊的長度,則會依照比例自動計算:

# 讓輸出圖檔的長邊長度為 640 像素
pdftoppm -jpeg -scale-to 640 input.pdf output

若要直接指定寬度或高度,可以用 -scale-to-x-scale-to-y 參數,通常建議的作法是只指定寬度或高度,另一個數值設定為 -1,讓程式自動依比例計算,這樣輸出的圖檔才不會變形:

# 讓輸出圖檔的寬度為 640 像素,高度依比例調整
pdftoppm -jpeg -scale-to-x 640 -scale-to-y -1 input.pdf output

# 讓輸出圖檔的高度為 640 像素,寬度依比例調整
pdftoppm -jpeg -scale-to-x -1 -scale-to-y 640 input.pdf output

裁切區域

若要裁切輸出的圖形,只留下部份的區域,可以使用 -W-H 指定區域的大小,並以 -x-y 指定區域的位置,例如:

# 裁切一個寬度為 640 像素、高度為 360 像素的區域,
# 此區域距離左邊界 60 像素、距離上邊界 80 像素
pdftoppm -jpeg -x 60 -y 80 -W 640 -H 360 input.pdf output

輸出的結果會像這樣:

裁切的區域