當我們將文件匯出成PDF檔案的時候,在大部分的情況下,文字、符號、線條等並不會被轉成圖片格式,此時擁有這個PDF檔案的人就可以直接從中複製出文字,也可以自由列印出高解析度的影本,頁面中的圖片也可以個別被複製出來。PDF格式雖然有提供「權限」設定,可以對列印複製等操作設定密碼鎖,但如果開啟這份PDF檔案的PDF讀取器並沒有遵守這個標準的話,依然還是可以直接列印與複製的。為了避免PDF內的東西很容易就被別人拷貝出來,我們可以將其通通轉為圖片。



ImageMagick是一款免費、開源、跨平台的圖像處理工具,可以進行圖像的縮放、翻轉、鏡射、變形、調整顏色等,也可以寫字、畫圖,從過去到現在的圖像格式它幾乎都能夠支援。不過它本身並沒有圖形化使用者介面(GUI)能用,要用指令來操作才行。

ImageMagick的官方網站:

取得ImageMagick

ImageMagick的官方網站可以找到給各個作業系統使用已經編譯好的ImageMagick程式,將它下載下來即可。

當然您也可以自己編譯ImageMagick,官方網站上同樣可以找到最新的ImageMagick原始碼。

使用ImageMagick處理PDF檔案

示範用的PDF檔案

這是接下來要拿來示範的PDF檔案,檔案大小約為1.3MB,這個檔案內的文字是可以被自由複製的。

製作圖片版本的PDF檔案

執行如下的指令,可以將PDF檔案的每頁轉成圖片,再存成PDF:

pdf-to-images

magick -compress Zip -quality 100 -units PixelsPerInch -density <解析度> -define pdf:producer -define pdf:author="<作者>" -define pdf:title="<PDF標題>" <輸入的PDF檔案路徑> <輸出的PDF檔案路徑>

以上指令中,<解析度>要填入要輸出的圖像解析度的數字,單位是ppi(pixels per inch),如果要用來列印的話,這個值要大於等於300會比較好,數值愈大,產生出來的PDF檔案的檔案大小就會愈大,通常會大於原本的PDF檔案。

ImageMagick的-define參數可以設定一些指定欄位的值,設定的格式為key=valuepdf:producer即PDF的producer(製造者)欄位,ImageMagick預設會填上自己的網址,所以像這邊這樣把它寫出來又不給值的話,就可以清除掉ImageMagick預設填入的值,如果您想要自己設定其它的值也是可以的。pdf:author即PDF的author(作者)欄位,ImageMagick預設也會填上自己的網址,您可以將這個欄位設定為自己的名字。pdf:title即PDF的title(標題)欄位,ImageMagick預設會填上輸出的檔案名稱,如果需要的話您可以覆寫掉這個欄位的值。

如下圖,可以將示範的PDF檔案輸出為解析度為300 ppi的圖片版本的PDF檔案,檔案大小約為8.9MB。這個檔案內的文字是不可以被複製的。

pdf-to-images

pdf-to-images

如果想要傳這個PDF檔案給別人作為展示(DEMO)用途的話,可以把解析度調到96 ppi以下,讓它列印出來的品質慘不忍睹,以達保護功效。如下圖,將示範的PDF檔案輸出為解析度為72 ppi的圖片版本的PDF檔案,檔案大小約為1.4MB,此時的畫質明顯變差。

pdf-to-images

pdf-to-images

PDF檔案轉PNG檔案

執行如下的指令,可以將PDF檔案的每頁轉成PNG圖片:

magick -quality 100 -units PixelsPerInch -density 72 <輸入的PDF檔案路徑> <輸出的PNG檔案路徑(必須.png結尾)>

以上的-density參數的值可以自行按需求調整,數值愈高,圖片像素點就愈多。輸出的PNG圖片檔名實際會是以-流水號.png來結尾。

PDF檔案轉JPEG檔案

執行如下的指令,可以將PDF檔案的每頁轉成JPEG圖片:

magick -quality 100 -units PixelsPerInch -density 72 <輸入的PDF檔案路徑> <輸出的JPEG檔案路徑(必須.jpg或是jpeg結尾)>

以上的-density參數的值可以自行按需求調整;-quality參數的值是用來設定JPEG圖片的壓縮品質,範圍是1 ~ 100,數值愈高,畫質愈好,檔案大小也就愈大。輸出的JPEG圖片檔名實際會是以-流水號.jpg或是-流水號.jpeg來結尾。