用 ImageMagick 將 PDF 轉成高品質的預覽圖檔

這裡介紹如何使用 ImageMagick 將 PDF 檔轉成高品質的預覽圖檔。

在網路上分享文章或是文件時,直接使用 PDF 檔案讓人下載瀏覽的方式,雖然可以呈現高品質的內容與排版,但是需要多一個下載步驟,就顯得不是很方便,另外如果遇到解析度比較高的 PDF 檔,檔案太大的話,下載也需要比較長的時間。


對於單純的網路分享或是內容預覽而言,其實改用圖檔的方式,有時候會比較方便,不管是上傳到 Facebook 或是放進部落格都很方便,以下我們介紹如何在 Linux 中使用 ImageMagick 這個免費工具,將整個 PDF 檔轉換為一頁一頁的高品質圖檔。

基本轉檔

我們以 MagPi 第 35 期的 PDF 檔來示範,若要將整個 PDF 檔轉成一頁一頁的 jpeg 檔,可以執行:

convert MagPi35.pdf MagPi35.jpeg

執行完後,我們就會得到該 PDF 檔每一頁的轉換圖檔:

converting-pdfs-to-pretty-previews-with-imagemagick-1

這是第一頁轉換出來的結果:

converting-pdfs-to-pretty-previews-with-imagemagick-2

提高解析度

ImageMagick 預設會以 72dpi 的解析度來轉換 PDF 檔,這樣的解析度不是高,轉換出來的圖檔大小每一頁大約都在 200KB 以下,適合一般性的網路分享,而如果 PDF 檔的文字比較小,怕看不清楚的話,可以將解析度調高,例如調到 300dpi:

convert -density 300 MagPi35.pdf MagPi35.jpeg

當然調高解析度的話,圖檔大小就會增加,這個就看自己的需求來調整了。

加入陰影

使用這樣的指令稿可以在每一張圖檔上自動加上陰影:

for i in *.jpeg; do
  convert $i \( +clone -background black -shadow 75x50+10+20% \) +swap -background white -layers merge ${i%.jpeg}.shadow.jpeg
done

其中陰影參數 -shadow 的部分有四個值,其代表的意義如下:

  1. 第一個 75 是透明度,單位是百分比,0 代表完全透明,100 代表完全不透明。
  2. 第二個 50 是 ImageMagick 的陰影 sigma 參數,等同於一般繪圖軟體的陰影模糊半徑,這個值越大,陰影的範圍就越大,而且越模糊。
  3. 最後兩個 +10+20 分別是陰影的 x 方向與 y 方向位移,後面的 % 代表使用百分比為單位,若沒有加上 % 的話,預設的單位為像素。

結果會像這樣:

converting-pdfs-to-pretty-previews-with-imagemagick-3

合併縮圖

如果您只需要觀看小縮圖,可以使用 ImageMagick 的 montage 指令將多張圖貼成一張:

montage -tile 3x2 -geometry +1+1 MagPi35-[012345].shadow.jpeg MagPi35-tile-3x2.jpg

這裡我們將 MagPi35-0.shadow.jpegMagPi35-5.shadow.jpeg 這六張圖合併成一張,輸出結果會像這樣:

converting-pdfs-to-pretty-previews-with-imagemagick-4

中文 PDF 檔

ImageMagick 對於中文的 PDF 檔案也可以處理,這是處理的一個範例結果:

converting-pdfs-to-pretty-previews-with-imagemagick-5

參考資料:OCS-Mag

實用工具

1 Comment

  1. zhou

    你好作者, 第一行中的convert xxxx.pdf xxx.jpeg会导致出错。

Leave a Reply