Extract Images from PDF(從 PDF 擷取圖片)會把儲存在 PDF 文件內部、做為圖片物件的照片、標誌、掃描檔與圖形抽出來,並各自存成一個獨立的 JPG 或 PNG 檔案,讓你可以自行開啟。整個工具完全在你目前瀏覽器分頁中執行,可接受一個本地 PDF(上限 25 MB),並逐一檢視檔案的物件表,找出符合兩種安全模式的影像 XObject:DCTDecode 串流(PDF 規範用來包裝嵌入 JPEG 資料),以及使用 DeviceRGB 或 DeviceGray 色彩空間的簡單 8 位元 FlateDecode 串流。DCTDecode 影像會以原本儲存的 JPG 位元組直接匯出,不做任何重新算繪或重新壓縮;而 FlateDecode 串流則會在本地解開後寫成 PNG,因為原始的 Flate 像素串流本身並不是一般圖片檢視器能直接開啟的檔案格式。任何瀏覽器工具無法安全辨識的項目,都會附上明確原因略過,而不會被錯誤解碼,因此你下載到的檔案都是真正的圖片,而不是損壞或色彩失真的佔位圖。這項工作和把 PDF 頁面轉成圖片不同——頁面快照會把頁面上所有可見的內容都拍下來,包含文字與向量繪圖;這裡你只會拿到文件作者實際嵌入的圖片資產。

how to extract all images from a pdf
how to extract all images from a pdf

嵌入影像與頁面快照的差異

PDF 可以用兩種截然不同的方式容納一張圖片。第一種是真正的影像物件:原始照片、掃描簽名或標誌以獨立的資料串流存放在 PDF 的物件表內,頁面只是透過位置與尺寸引用它。第二種是描繪出來的向量內容:形狀、文字和線條看起來像圖片,但實際上是一組指令,PDF 讀取器會依這些指令從頭重畫整個頁面。當你問「怎麼從 PDF 擷取所有圖片」時,幾乎一定是指第一種,因為那才是你真正可以重複使用的資產。Extract Images from PDF 工具會檢查每一個物件字典、讀取 Filter 項目,並只接受它知道如何安全往返轉換的兩種編碼方式。這就是為什麼鑲嵌在型錄中的 JPEG 照片可以直接輸出成 JPG、放進簡報中使用,而用 PDF 向量繪製的圖表則完全不會出現在結果中——因為那張圖表一開始就不是圖片。

工具可以匯出哪些 PDF 影像編碼

PDF 格式允許多種方式來壓縮與編碼嵌入影像的色彩,而且並非所有方式都能乾淨地對應到 JPG 或 PNG 檔。瀏覽器工具對哪些情況支援、哪些情況不願猜測,態度十分明確,因為錯誤解碼一個刁鑽的串流,往往會產生一個可以開啟但色彩錯誤、缺少 alpha 通道或結構損壞的檔案。下表整理了當你開啟一份典型的混合 PDF 時,可以預期的實際行為。

PDF 中的編碼方式工具中的處理方式輸出檔案
DCTDecode(JPEG 串流)不重新算繪,直接匯出原始位元組JPG,與儲存的內容完全相同
FlateDecode、8 位元 DeviceRGB、無遮罩在本地解開後繪製到畫布上,編碼為 PNGPNG,無損
FlateDecode、8 位元 DeviceGray、無遮罩在本地解開後繪製到畫布上,編碼為 PNGPNG,灰階
JPXDecode(JPEG 2000)、JBIG2、LZW、CCITT附上原因略過;不解碼
CMYK、索引調色盤、軟遮罩、影像遮罩、預測器、多重串接濾鏡附上原因略過;不解碼

DCTDecode 這條路徑在真實世界的 PDF 中最為關鍵,因為現代 PDF 中放入的幾乎每張照片、掃描文件和素材圖片都是以 JPEG 包裝。透過保留原始位元組,下載回來的 JPG 與 PDF 作者原本嵌入的檔案相同,包含原始解析度與壓縮痕跡。FlateDecode 路徑則涵蓋了從設計工具匯出的圖表與螢幕截圖——這些工具會先儲存未壓縮的原始像素、再用 zip 壓縮起來;把它們轉成 PNG,是唯一能讓你拿到作業系統認得的檔案的方式。其他所有編碼方式則是被刻意略過的,這是設計上的考量而不是限制,因為替代方案只會是悄悄損毀的圖片。

如何從 PDF 擷取所有支援的影像

整個實際流程只需要幾次點擊,而且你的文件全程都留在自己的電腦上。

  1. 在桌面瀏覽器中開啟 Extract Images from PDF。頁面載入後工作區已準備好接收檔案,此時還沒有任何檔案被上傳。
  2. 選擇一個不超過 25 MB 的本地 PDF。較大的檔案會在任何掃描開始前就被拒絕,這樣你不必等一段根本跑不完的慢掃描。
  3. 點擊 Extract images 開始掃描。瀏覽器會逐一檢視 PDF 的物件表,把每一個符合支援編碼的間接影像 XObject 都列出來。
  4. 檢視每個項目旁顯示的格式與像素尺寸。這是你確認某個候選項目是否就是你真正想要的那張照片、標誌或掃描檔的機會,避免誤抓一個其實不需要的小裝飾圖示。
  5. 使用各自的下載連結下載每一張支援的影像。DCTDecode 項目給你 JPG;簡單的 FlateDecode 項目給你 PNG。對於同一個已儲存物件的重複引用只會出現一次,因此清單不會被重複項目灌水。
  6. 用你的圖片檢視器開啟下載下來的檔案,和來源 PDF 比對,並保留原始 PDF 直到你確認每個資產都符合預期。

限制、略過項目與處理缺少影像的方式

工具在配置輸出緩衝區之前,會先套用多項上限,因為解碼一個有問題或過大的 PDF 物件,很快就會耗盡瀏覽器的記憶體。可接受的單一 PDF 上限為 25 MB;候選數量有上限;任一影像任一邊的像素不得超過 12,000 像素;單一影像不得超過 40 megapixel;所有影像的總和控制在 100 megapixel 內;解碼後的 Flate 像素資料上限為 100 MB。如果 PDF 有密碼保護、結構損壞,或使用不常見的濾鏡組合,掃描可能會失敗且不會產生任何下載;工具不會繞過加密、不會修復壞檔、不會驗證簽章,也不會對來源文件是否可信做任何宣稱。當某張影像被略過時,原因會顯示在該項目旁,讓你知道你面對的究竟是 CMYK 掃描檔、JPXDecode 精靈圖,還是帶遮罩的向量圖形。對於瀏覽器工具無法處理的資產,實際上有兩個做法:用頁面轉檔工具算繳該頁,或向文件作者索取原始檔案。

在真實文件上取得乾淨結果的訣竅

幾個習慣在從混合 PDF 抽取圖片時會帶來明顯差異。先在另一個檢視器中開啟來源 PDF,記下哪些頁面含有真正的照片、哪些是向量繪圖,這樣你就能大致預期掃描結果的數量。在你確認每個下載檔案之前,先保留好原始 PDF;一旦你選擇另一個檔案或關閉分頁,暫時性的下載網址就會釋出,而你忘了抓的那個資產就再也拿不回來。對於任何來自相機或掃描器的影像,請優先選擇 DCTDecode JPG 輸出,因為位元組是逐位元保留的。PNG 輸出只用於原本以 FlateDecode RGB 或灰階像素儲存的圖表、螢幕截圖與灰階掃描檔。如果掃描結果比你預期的少,缺少的幾乎一定是用 JPX、JBIG2、LZW、遮罩鏈或 CMYK 色彩空間編碼的影像——這些是瀏覽器工具拒絕錯誤解碼的格式。

什麼時候頁面轉檔工具更合適

當你需要的是存在於 PDF 中的某張特定照片、標誌、簽名掃描檔或圖形,而且想要原始資產而不是整頁圖片時,擷取嵌入影像物件就是正確的選擇。當你真正需要的其實是可見頁面的快照,包含字型、邊距、向量繪圖與版面配置時,它就不是合適的工具。針對那種工作流程,一個把每一頁都轉成圖片的頁面算繪器才是合適的工具,因為它會捕捉畫布上所有內容,而不是只抓取存成影像 XObject 的項目。PDF to PNG 轉檔器正是用於第二種用途,它會為每一頁產生一個檔案,而不是為每張嵌入影像產生一個檔案。想要資產時,選擇嵌入影像擷取器;想要整頁時,選擇頁面轉檔器。如果目標是在單一刁鑽資產上保留品質,相關教學 Copy an Image from a PDF Without Losing Quality 會帶你使用同一個瀏覽器工具,但聚焦於一張特定的圖片,而不是對整份文件做完整掃描。

想更深入了解,請參閱 How to Delete Images From a PDF File Locally