您對此任務的處理方式無法正常工作。
您將使用完整的信紙大小的PDF頁面(612 X 792磅)轉換成PNG圖像的命令。
然而,嵌入到PDF頁面(612 X 792磅)的圖像的原尺寸爲800×600像素。這可以通過運行pdfimages -list
可以看出:
pdfimages -list dice.pdf
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio
----------------------------------------------------------------------------------------
1 0 image 800 600 rgb 3 8 image no 12 0 72 72 277K 20%
1 1 smask 800 600 gray 1 8 image no 12 0 72 72 50.1K 11%
所以轉換PDF頁面時,這是第一個問題:它不給你所包含的圖像的正確尺寸。
然而,第二,更根本的問題是:你從轉換PDF頁面得到任何圖像重疊在對方,因爲他們是從頁區域中的所有PDF對象的組合。 (當然,您只能裁剪頁面的一部分 - 但同樣也可以將裁剪區域中的所有PDF對象組合在一起...)。當您嘗試將所有白色像素轉換爲透明像素時,會遇到這種結果:由於原本不同的對象會合併爲一個像素表示,因此您不能再根據需要區分它們。
您應該採取不同的方法並使用不同的工具來提取圖像:使用pdfimages
(以上用於與-list
參數從PDF的頁面上顯示的圖像性能工具)。正如你所看到的,有圖像列表:一種是RGB光柵圖像,另一個是灰度光柵圖像,被戲稱爲類型smask
(softmask)。
這裏是一個命令來提取兩個圖像作爲PNG:
pdfimages -png dice.pdf dice-images
這將提取兩個:
dice-images-0000.png
(彩色圖像)
dice-images-0001.png
(灰度圖像)
(注意:只有Poppler版本pdfimages
的最新版本才能讓您將圖像解壓縮爲PNG。在PDF中沒有PNG這樣的東西。只有柵格數據,用不同的方法壓縮。舊版本只能將圖像提取爲PPM或PNM。這對我在下面描述的內容沒有任何影響。即使你提取PPM/PNM圖片,這兩個文件仍然可以如下所述處理...)
下面是兩者的並排側,按比例縮小的蒙太奇:

正如你所看到的,圖像本身沒有透明背景,而是一個白色背景。 (它不具有Alpha通道)內PDF格式,這兩個圖像結合使用,以創建透明區域:
- 什麼出現在softmask完全黑(右)表示:真正的這個像素圖像(左)意味着完全透明。
- 什麼看起來完全白色的軟掩模(右)意味着:這個像素的真實圖像(左)是完全不透明的。
- 在軟掩模中出現的灰色陰影(右)意味着:實像(左)的這個像素意味着部分透明(與其灰度/黑色級別一致)。
要結合這兩個文件(彩色圖像和灰度softmask)回一個PNG透明,你可以使用ImageMagick的現在......
沒有*「包含PNG文件的PDF」*。一旦圖像位於PDF內部,它就是柵格數據(對於這些柵格數據塊有各種壓縮方案 - 其中一個與JPEG使用相同)。它以前可能是一個PNG文件,但它不再是。沒有辦法從PDF數據中發現這一點。當然,您可以提取柵格數據並將它們再次轉換爲PNG格式。或者轉換爲TIFF,GIF,JPEG ......如果您對PDF的創建沒有預知,那麼您將不會了解包含的圖像以前的生命形式...... – 2014-11-14 21:58:40