Adobe Acrobat 匯出 PDF 內嵌圖片的方式,是走訪文件中的圖片 XObject,依照各自的 Filter 項目解碼,再把結果寫入磁碟——對 DCTDecode 串流通常輸出 JPEG,其他情況則輸出重新壓縮過的點陣資料。當這套流程能運作時,效果不錯,但它需要一份付費的 Acrobat 授權、一套已安裝的桌面應用程式,以及願意在一台能執行 Adobe 軟體的機器上開啟這份文件。許多搜尋「如何在 Acrobat 中從 PDF 擷取圖片」的讀者,其實是想找到繞開這些門檻的方法。以瀏覽器為基礎的擷取方法,處理的是同樣的底層 PDF 圖片物件,依循 PDF 參考文件中所記載的同一套 DCTDecode 與 FlateDecode 規格,但整個過程就在你已經開啟的頁面裡完成。結果是為工具能安全辨識出的每一個內嵌素材,產生一個個別的下載連結,不需要上傳。以下說明 Acrobat 內建路徑實際上做了什麼、本機瀏覽器工具適合放在哪裡,以及在你自己的機器上,從 PDF 匯出受支援圖片的確切步驟。

在 Adobe Acrobat 中擷取圖片:內建路徑
Acrobat 的圖片匯出功能,藏在它的 Export PDF 工作流程之後。在 Acrobat Pro 或 Acrobat Standard 中開啟這份 PDF,接著選擇 File > Export To > Image,或使用 Tools > Export PDF,並選擇 Image 作為輸出格式。如果你要的是逐張圖片匯出,而不是逐頁的截圖,更精準的路徑是 Tools > Edit PDF,它會把底層內容顯露出來。在該檢視畫面中對某張圖片按右鍵,會提供「Save Image As」選項,把解碼後的點陣圖寫入你機器上的一個資料夾。Acrobat 會走訪每一個圖片 XObject,套用其指名的濾鏡(DCTDecode、FlateDecode、JPXDecode、JBIG2Decode 及其他),並產生一份可檢視的檔案。輸出資料夾、檔名與格式選擇,全都在對話方塊中控制。
這條路徑有幾個值得注意的限制。它只能在安裝了 Acrobat 的機器上執行,匯出步驟會要求你存到一個可寫入的資料夾,而複雜的編碼方式有時會產生一張被拉平的點陣圖,而不是原始位元組。如果你的目標就是那個內嵌素材——放進 PDF 裡的那張照片、標誌、掃描檔或圖形——而且 Acrobat 已經開啟,這就是傳統的路徑。如果不是,或者這份文件裡的圖片你不想上傳到雲端服務,接下來的段落會介紹一條留在你裝置上的替代路徑。
為什麼在許多情況下,本機瀏覽器方法是更好的選擇
以瀏覽器為基礎的擷取工具,之所以值得和 Acrobat 放在同一個討論裡,原因很簡單:PDF 是以一種可預期的方式,把圖片儲存成物件的,而 Adobe 在 PDF 參考文件中所記載的同一套 DCTDecode 與 FlateDecode 規格,無論解碼軟體是一套桌面應用程式,還是一個 JavaScript 分頁,都同樣適用。依照 PDF 參考文件,一個圖片 XObject 帶有一個 Filter 項目,指名它的解碼方法,再加上一段解碼器知道如何解壓縮的位元組串流。瀏覽器可以讀取這些位元組、把它們解壓縮,並回傳一份可檢視的檔案。DecompressionStream Web API 正是讓 FlateDecode 的解壓縮步驟能在一個分頁內完成的關鍵。
在瀏覽器中完成這件事的優勢在於:檔案永遠不會離開你的裝置。瀏覽器用 File API 從你的本機磁碟讀取這份 PDF,在記憶體中解碼受支援的圖片物件,並建立指向記憶體內 blob 的物件網址。每一張圖片都會有自己的下載連結。整個過程沒有上傳步驟,也沒有伺服器端處理。對於重視隱私的工作流程來說——一份帶有內嵌標誌的合約草案、一份你想重複使用其中圖表的研究 PDF、一份帶有照片的客戶文件——這條純本機的路徑,往往是比開啟 Acrobat 更好的權衡選擇。同樣的想法在Copy an Image from a PDF Without Losing Quality walkthrough 中有詳細探討,那篇文章特別著重在保留原始的 JPEG 位元組上。
在你的瀏覽器中從 PDF 擷取圖片
如果你沒有 Acrobat,或者你只是想拿到內嵌素材,而不想開啟這套桌面應用程式,Extract Images from PDF 會在你的瀏覽器中執行同樣的 DCTDecode 與 FlateDecode 步驟。流程如下:
- 在目前的桌面瀏覽器中開啟 Extract Images from PDF。
- 從你的機器上選擇一份最大 25 MB 的本機 PDF。
- 點擊 Extract images,掃描這份文件,找出有大小限制的內嵌圖片物件。
- 檢視結果清單——每一筆項目都會顯示格式(JPG 或 PNG)以及以像素為單位的尺寸。
- 點擊每張受支援圖片旁邊的下載連結,把原始的 JPEG 位元組,或本機編碼出來的 PNG,存到你的下載資料夾。
這次掃描會列舉間接的圖片 XObject,把 DCTDecode 位元組直接匯出成 JPG,不重新繪製,並在把簡單的 8 位元 FlateDecode DeviceRGB 或 DeviceGray 串流編碼成 PNG 之前,先把它們解壓縮。每一張受支援的圖片都會拿到自己的下載連結,而重複出現的間接圖片參照只會被檢視一次,因此同一份儲存的素材不會顯示成重複的下載項目。
哪些內嵌圖片會被匯出(哪些會被跳過)
PDF 儲存圖片的方式有許多合法的變化形式。並不是每一種都能像一般應用程式所預期的那樣,被安全地匯出成一份獨立的圖片檔案。以下說明這個瀏覽器工具如何處理兩種受支援的情況,以及它刻意跳過的情況。
| PDF 中的編碼方式 | 這個工具會做什麼 | 輸出結果 |
|---|---|---|
| DCTDecode(內嵌的 JPEG) | 直接匯出儲存的串流位元組,不重新繪製 | JPG,原始畫質 |
| FlateDecode,8 位元 DeviceRGB 或 DeviceGray,沒有 DecodeParms | 解壓縮原始像素串流,放到一個本機 canvas 上,編碼成 PNG | PNG,無損 |
| JPXDecode(JPEG 2000)、JBIG2Decode、LZW、索引色盤、CMYK | 跳過——不會做退化解碼 | 回報為已跳過 |
| 軟遮罩、圖片遮罩、串接式濾鏡、預測器 | 跳過——太容易解碼出錯誤的顏色 | 回報為已跳過 |
跳過是一項刻意的選擇。這個工具不會假裝它不支援的編碼方式,可以和它知道如何匯出的兩種情況互換處理。回傳一張損壞的 PNG,或色彩描述檔錯誤的 PNG,會比完全不回傳檔案更糟。如果某一張圖片被跳過,通常是因為來源 PDF 用 JPX、JBIG2、LZW、索引色盤、CMYK 色彩、軟遮罩,或串接式濾鏡儲存它——這些都不在支援範圍之內。
擷取之前套用的安全限制
在這個工具配置任何輸出緩衝區之前,它會先依一套安全限制檢查這份文件。系統接受最大 25 MB 的 PDF。每一個候選圖片,都會依任一軸最大 12,000 像素、每張圖片最大 40 百萬畫素的上限進行檢查。整份文件中候選像素總數的上限是 100 百萬畫素,解碼後的 Flate 圖片資料上限則是 100 MB。
一份受密碼保護、格式錯誤,或異常複雜的 PDF,仍然可能失敗。這個工具不會繞過加密、修復損毀的檔案、驗證簽章,或宣稱來源文件是可信的。如果一次掃描對你原本預期的圖片回報跳過,上面那份編碼對照表通常是第一個該查看的地方;各項限制通常是第二個。暫時性的下載網址,會在你選擇另一個檔案或離開這個工具時立即釋放,因此記憶體內的 blob 不會一直留著。
內嵌素材與頁面截圖:該用哪一個工具
擷取一張內嵌圖片,和把一頁 PDF 轉換成一張圖片,是不同的操作,合適的工具取決於你真正想要的是什麼。
| 如果你想要…… | 使用 | 原因 |
|---|---|---|
| 放進這份 PDF 裡的原始照片、標誌、掃描檔或圖形 | Extract Images from PDF | 匯出文件所儲存的圖片資料(DCTDecode),或把原始像素串流解壓縮後產生的 PNG(FlateDecode) |
| 整個可見的頁面,包括文字、向量繪圖與註解 | PDF to PNG 或 PDF to JPG | 把整頁渲染成一張圖片,確保不遺漏任何內容,代價是需要重新壓縮 |
| 單獨一整頁,輸出成一份 JPG | PDF to JPG Converter | 逐頁輸出 JPG,可調整比例與畫質,全程在本機處理 |
| 一張把所有頁面堆疊在一起、可捲動的長圖 | PDF to Long Image | 一張把所有頁面垂直堆疊起來的 PNG,同樣在本機處理 |
對於「如何在 Acrobat 中從 PDF 擷取圖片」這個具體問題,原則很簡單:如果你的目標是那個內嵌素材,而且 Acrobat 已經開啟,就使用 Acrobat 的 Export PDF,或在 Edit 模式中按右鍵選「Save Image As」;如果你沒有 Acrobat、希望檔案留在你的裝置上,或只需要受支援的內嵌圖片,上面介紹的瀏覽器路徑,就能在不上傳文件的情況下,涵蓋 DCTDecode 與簡單的 FlateDecode 情況。無論哪一種方式,都請保留原始 PDF,檢查下載結果的尺寸與外觀,並在確認下載下來的檔案與你預期的素材相符之後,再拿去使用。
想更深入了解,請參閱How to Extract PDF Pages in Preview (Browser Method)。