我正在使用pdfimages -j bar.pdf /tmp/image
從PDF中提取圖像。我的目標是在添加它們時讓它們處於原始狀態。所以如果它是一個.tif我想得到一個.tif,如果它是一個JPG,我想得到一個.jpg。我提取的所有東西都得到.ppm。如何從原始格式的PDF中提取圖像
是否有可能獲得原始格式的圖像或ppm是我唯一的選擇?
更新:我希望這樣做的主要目的是檢查包含在文檔中的所有圖像的DPI,或檢查它們是否是矢量。
我正在使用pdfimages -j bar.pdf /tmp/image
從PDF中提取圖像。我的目標是在添加它們時讓它們處於原始狀態。所以如果它是一個.tif我想得到一個.tif,如果它是一個JPG,我想得到一個.jpg。我提取的所有東西都得到.ppm。如何從原始格式的PDF中提取圖像
是否有可能獲得原始格式的圖像或ppm是我唯一的選擇?
更新:我希望這樣做的主要目的是檢查包含在文檔中的所有圖像的DPI,或檢查它們是否是矢量。
您無法(可靠地)通過查看PDF中的圖像來了解源圖像文件格式。例如,TIFF圖像可以用(不在我頭頂)壓縮,RLE,CCITT(幾個變體),LZW,Flate,Jpeg。如果PDF中的圖像是用DCT(jpeg)壓縮的,那麼您如何確定源文件是否爲TIFF或Jpeg?如果使用Flate進行壓縮,您如何區分TIFF和PNG?此外,它是生成決定壓縮的PDF的軟件,所以我可以採用Flate壓縮的TIFF圖像,並使用JPEG2000或CCITT壓縮圖像將其編碼爲PDF,並使用Jbig2或jpeg圖像壓縮它,將其縮小爲8位調色板圖像並用Flate壓縮。
TL; DR你不知道。
我同意基座,你可能無法確定使用的原始圖像格式。 ppm不是你唯一的輸出選項壽。
Pdfimages讀取PDF文件,掃描一個或多個頁面,並寫一個PPM,PBM,或JPEG文件爲每個圖像,image-root-nnn.xxx,其中nnn是圖像數量和xxx是圖像類型(.ppm,.pbm,.jpg)。
http://linux.die.net/man/1/pdfimages
此外,還當然可以改變使用例如格式image magick's convert
您需要得到圖像X對象(其中包含了原始圖像的寬度和高度),然後顯示的實際尺寸,然後你可以工作了這一點。
第一個,PDF術語中稱爲「圖像」的東西,根據定義,它總是一個光柵圖像。沒有像'矢量圖像'這樣的東西。即使轉換爲PDF的原始文件包含矢量圖形,轉換器程序也可能已經決定將它們包括爲光柵圖像。如果你提取這個,你不會得到你的矢量圖形,而是一個光柵圖像。保存在PDF內部的柵格圖形不能由pdfimages
提取。
二,你並不需要真正提取使用pdfimages
圖像。假設您使用的是當前版本(晚於v0.20。2)「poppler的」叉pdfimages
你可以使用-list
參數來獲得一定範圍的PDF頁面的所有圖像的列表:
pdfimages -list -f 7 -l 8 ct-magazin-14-2012.pdf page num type width height color comp bpc enc interp object ID --------------------------------------------------------------------- 7 0 image 581 838 rgb 3 8 jpeg no 39 0 7 1 image 4 4 rgb 3 8 image no 40 0 7 2 image 314 332 rgb 3 8 jpx no 44 0 7 3 image 358 430 rgb 3 8 jpx no 45 0 7 4 image 4 4 rgb 3 8 image no 46 0 7 5 image 4 4 rgb 3 8 image no 47 0 7 6 image 4 6 rgb 3 8 image no 48 0 7 7 image 596 462 rgb 3 8 jpx no 49 0 7 8 image 4 6 rgb 3 8 image no 50 0 7 9 image 4 4 rgb 3 8 image no 51 0 7 10 image 8 10 rgb 3 8 image no 41 0 7 11 image 6 6 rgb 3 8 image no 42 0 7 12 image 113 27 rgb 3 8 jpx no 43 0 8 13 image 582 839 gray 1 8 jpeg no 2080 0 8 14 image 344 364 gray 1 8 jpx no 2079 0
注再次:這個版本的pdfimages
是來自Poppl的一個(來自XPDF的那個不是(還有?)支持這個新功能)。
正如您所看到的,它列出了圖像的相應寬度和高度。但是,這還沒有給你任何關於新聞部的線索。如果一個大的光柵圖像被擠壓到PDF頁面的一個小空間裏,那麼你的DPI值就會很高。 (這是他自己的答案的基礎評論也強調...)
爲了計算DPI,您必須測量圖像的寬度/高度,因爲它顯示在頁面上(可以使用Acrobat/Reader中的工具之一來完成此操作),然後使用上述輸出中的相應信息來計算DPI。
我的目標是獲取原始文件是我希望能夠檢查上傳的所有圖像的DPI,以確保至少300 DPI。當我使用Imagick的identifyImage(http://php.net/manual/en/imagick.identifyimage.php)時,它不提供圖像的分辨率,只有寬度/高度。 – Webnet
PDF圖像本身沒有分辨率。圖像由具有寬度和高度的2D樣本集定義。有效的解決方案是將特定圖像放置在任何給定頁面上以及將該頁面呈現給用戶的方式。所以我可以放置一個96×96的圖像在一個1平方英寸的96 dpi,或者我可以把它放在一個2平方英寸,它將是48 dpi。 – plinth
我試圖以編程方式確定圖像是否足夠高以便準確打印。你是否說如果不知道圖像是如何放置在文檔中的話,這是不可能的?即 - 我不能只檢查圖像本身。 – Webnet