PDF 將照片、標誌和掃描檔案儲存為文件內部的離散影像物件,基於瀏覽器的擷取工具可以將這些物件拉出來,作為個別的 JPG 或 PNG 下載檔,而無需將頁面光柵化或將檔案上傳到伺服器。Photoshop 是許多人第一個嘗試的工具,因為它可以原生開啟 PDF,但預設會將每個頁面扁平化為單一的光柵圖層,這意味著 PDF 中原本的 JPG 內容會在你於匯入對話框點擊「確定」的瞬間遺失。從 PDF 擷取圖片工具則採取不同的做法:它會遍歷 PDF 的內部物件表,找出有邊界框的影像串流,並將它能安全解碼的部分以獨立檔案的形式交給你。對於嵌入的 JPEG(由 PDF 規範定義的 DCTDecode 串流類型),該工具會原封不動地回傳原始的 JPEG 位元組,因此品質保持完整,且檔案與文件原作者當初放入 PDF 中的內容一致。

本指南的其餘部分將說明為何 Photoshop 的匯入對話框很少給出你想要的結果、瀏覽器工作流程如何以三個具體步驟進行、該工具實際上會掃描哪些內容、它在檔案大小與複雜度上的界線,以及何時該選擇「頁面轉影像」轉換器。

how to extract images from pdf in photoshop
無需 Photoshop 從 PDF 擷取圖片

為何 Photoshop 在擷取嵌入影像方面力有未逮

當你在 Photoshop 中開啟 PDF 時,應用程式會詢問如何將文件光柵化。預設行為會將每個頁面視為一張選定解析度的平面影像,這對編輯頁面版面很有用,但對嵌入的素材卻具有破壞性。一張原本在 PDF 中以 2 MB JPG 儲存的照片,會變成尺寸符合頁面框而非原始影像尺寸的重新壓縮圖層。向量文字會變成像素。與嵌入物件綁定的柔邊遮罩、色彩描述檔和中繼資料都會在匯入過程中被剝離。

第二個問題在於 Photoshop 工作流程預設你擁有付費授權、數百 MB 的磁碟空間,以及願意等待匯入工具算繪高解析度預覽所花費的時間。光是從一份多頁報告中複製任何內容之前,檔案體積就可能膨脹成數 GB 的 PSD 檔。第三個問題是上傳行為:許多 Photoshop 的替代工具和線上 PDF 轉換器會將文件傳送到遠端伺服器進行處理,這對於機密草稿、醫療或法律文件,以及任何受資料處理協議約束的檔案而言,是一條不可逾越的紅線。

Photoshop 也無法透過間接參考,觸及那些在多個頁面間重複使用的影像物件,而必須算繪每一個引用它們的頁面。瀏覽器擷取工具只需檢查物件表一次,對重複出現的素材進行去重,並只將儲存的影像位元組開放供下載,因此同一個共用標誌不會在結果面板中出現三次。

如何在本地端從 PDF 拉出嵌入的影像

「從 PDF 擷取圖片」工具完全在當前的瀏覽器分頁中執行。檔案不會離開你的裝置,不需要帳號,原始 PDF 也絕不會被傳送到伺服器。以下步驟涵蓋從選擇檔案到驗證每個下載的完整工作流程。

  1. 使用檔案選擇器挑選一份大小不超過 25 MB 的本地端 PDF。較大的文件會在工具配置任何輸出緩衝區之前就被拒絕,因此若你的 PDF 包含高解析度掃描,請先檢查檔案大小。
  2. 選擇「擷取圖片」以掃描 PDF 中有邊界框的嵌入影像物件。該工具會使用 pdf-lib 列舉間接的影像 XObject,並在本機讀取每個候選物件的原始串流位元組。
  3. 檢視每個偵測到的影像所列出的格式與尺寸。受支援的項目會顯示其原始像素大小,並標示為 JPG 或 PNG。
  4. 使用個別的下載連結下載每個受支援的 JPG 或 PNG。嵌入的 JPEG 會以原始儲存的位元組輸出;FlateDecode 的 RGB 與灰階影像則會匯出為 PNG,因為原始串流本身並非獨立的檔案格式。
  5. 在你重新使用這些下載檔之前,請對照來源 PDF 進行檢查。逐一開啟並確認它符合你預期要還原的素材。

暫存的下載網址會在你選擇另一個檔案或關閉分頁時立即釋放,因此在離開頁面前請先儲存所有需要的檔案。

該工具實際上會掃描什麼

PDF 的影像儲存方式有許多合理的變化,而擷取工具對其能處理的範圍有明確的說明。有兩種格式受到支援,理解其差異對於除錯「下載不到檔案」的問題相當重要。

第一個受支援的情況是 DCTDecode,也就是 PDF 規範中對嵌入 JPEG 串流的稱呼。該工具會將這些位元組保留為 JPEG 資料,而不是算繪後再重新壓縮,這能逐位元地保留文件儲存的影像內容。若原始素材是一張高品質照片,那麼下載的 JPG 會與 PDF 作者當初放入文件中的檔案完全相同,包括 JPEG 串流中承載的任何 EXIF 中繼資料。

第二個受支援的情況是使用 8 位元 DeviceRGB 或 DeviceGray 色彩,且結構簡單的 FlateDecode 影像。瀏覽器會使用本機的 DecompressionStream 將有邊界框的原始像素串流解壓縮,將像素繪製到畫布上,然後編碼為 PNG 供下載。此處之所以使用 PNG,是因為原始的 Flate 影像串流並非一般應用程式能直接開啟的檔案格式。預測函數、遮罩、索引調色盤、CMYK 色彩以及串接的濾鏡會被刻意略過。若想進一步了解底層的物件模型,pdf-lib 專案的 PDFRawStream 原始碼 記錄了原始串流位元組在任何解碼步驟之前是如何被公開存取的。

不支援的編碼方式及其處理方式

JPEG 2000 (JPX)、JBIG2、LZW、索引調色盤、CMYK 色彩空間、柔邊遮罩、影像遮罩、預測函數以及多重濾鏡鏈,在真實世界的 PDF 中都很常見。擷取工具會略過這些物件,並回報略過的原因,而不是用錯誤的色彩進行解碼,或回傳一個損壞的檔案。同一個重複出現的間接影像參考只會被檢查一次,因此儲存的同一份素材不會在結果清單中變成一組令人困惑的重複下載。

值得了解的安全限制

在工具配置任何輸出緩衝區之前,會套用一組限制,以防止失控的 PDF 耗盡瀏覽器記憶體。了解這些限制有助於你判斷特定文件是否合適,或是否需要採用其他方法。

限制數值
PDF 檔案大小上限 25 MB
單邊最大影像尺寸每邊 12,000 像素
單張影像最大像素數40 百萬像素
總像素預算所有影像合計 100 百萬像素
解碼後 Flate 資料上限100 MB

即使檔案符合這些限制,有密碼保護、損壞或異常複雜的 PDF 仍可能處理失敗。該工具不會繞過加密、修復損壞的檔案、驗證數位簽章,也無法對來源文件是否可信做出任何聲明。

嵌入影像擷取與整頁轉換的比較

將兩個看似相似但產生截然不同輸出的任務分開來看會有所幫助。

任務獲得的結果最適合的情境
擷取嵌入的影像儲存在 PDF 內部的原始 JPG 或 PNG 位元組,並經過去重還原由文件作者放入的照片、標誌、掃描檔或圖形
將頁面轉換為 PNG 或 JPG頁面上所有可見內容的光柵快照,包括文字與向量圖案將頁面以圖片形式分享、將頁面嵌入投影片、列印視覺紀錄

如果你需要的是頁面本身,包括將文字與向量元素算繪成像素,請使用 PDF 轉 PNGPDF 轉 JPG 轉換器。如果你需要的是一份被放入 PDF 的特定素材,並且不要周圍的頁面,那麼嵌入影像擷取工具才是正確的選擇。想要深入了解相同工作流程的讀者,也可以參閱如何在本地端從 PDF 文件擷取圖片指南。

驗證擷取出的檔案

下載並不代表工作流程結束。請以相同的縮放等級開啟每個檔案,並與來源 PDF 進行比對。檢查像素尺寸是否與工具回報的一致,掃描照片是否有色彩偏移,並確認標誌是清晰的而非模糊的。如果某個下載檔看起來不對,該素材很可能屬於被略過的編碼,而不是檔案損壞,這是一個有用的訊號,代表你應該針對那張特定影像嘗試其他方法。

在你確認下載檔可用之前,請將原始 PDF 與擷取出的檔案保存在一起。暫存的下載連結會在你選擇另一個檔案或關閉分頁時立即失效,因此不要依賴瀏覽器工作階段來為你保存副本。

如果你正在權衡各種選項,如何在 Adobe Reader 中從 PDF 移除影像對此有詳細說明。