從 PDF 文件中擷取影像,意思是把原本存放在檔案內部的原始圖片檔案抽出來——而不是對已渲染的頁面進行螢幕擷取。PDF 可以用多種格式儲存影像物件,而基於瀏覽器的擷取工具會走訪文件的內部結構,找出內嵌的 JPG 或簡單的 RGB/灰階圖片,並把該檔案以 JPG 或 PNG 的形式交給你,讓你可以在本機儲存。掃描過程中 PDF 完全不會離開你的電腦,而且在格式允許的情況下,原始圖片的位元組會被完整保留。若要取回設計師實際放入文件中的素材——例如標誌、產品照片、掃描過的簽名、圖表圖示——你需要的是擷取,而不是頁面轉換。頁面轉換會對頁面上所有可見的內容拍一張平面圖片,包含文字與向量圖,然後以你選定的品質重新編碼。擷取則會在能力範圍內保留內嵌的影像位元組,因此從工具下載的 JPG 與當初建構文件時所使用的 JPG 完全相同。本指南的其餘部分會說明擷取在什麼情境下是正確的工具、如何在本機 PDF 上執行,以及當某張影像無法安全匯出時可以預期什麼。

從 PDF 擷取影像的真正含義
PDF 檔案是由物件所組成的。文字、字型、向量路徑和圖片都是獨立的物件,透過檔案末端的目錄表相互連結。當設計師把照片或標誌放入版面時,該圖片會以影像 XObject 的形式儲存——也就是一塊帶有寬度、高度、色彩空間與篩選器名稱(告訴讀取器如何解碼位元組)的獨立位元組區塊。擷取該圖片的過程,就是找到這個 XObject、讀取其尺寸、依照文件記載的篩選器解碼位元組,然後把結果以獨立的 JPG 或 PNG 檔案寫回。
這與打開頁面並按下 Print Screen 在本質上是截然不同的。頁面快照是渲染引擎在某個解析度下所繪製內容的點陣化結果:文字、向量曲線、線條繪圖、註解,以及內嵌的圖片,全部被壓成一張點陣圖。快照還會經過品質滑桿的調整,因此儲存的 JPG 輸出後可能比原始檔更模糊或出現更明顯的方塊瑕疵。擷取則跳過這些步驟,直接取得儲存的圖片。其權衡在於,工具只能還原它知道如何安全解碼的圖片物件;任何它無法辨識的內容會被略過,而不是被強行解碼成損壞的結果。
如何在瀏覽器中從 PDF 文件擷取影像
Extract Images from PDF 工具會在目前的瀏覽器分頁中完成整個作業。無需安裝任何東西,而且文件不會離開你的裝置。請依照下列步驟,從單一 PDF 檔案中取出支援的圖片物件。
- 在瀏覽器分頁中開啟 Extract Images from PDF。
- 從電腦中選擇一個本機的 PDF——此工具接受單一檔案,大小上限為 25 MB。
- 點擊 Extract images 開始掃描檔案中的內嵌影像物件。
- 等待掃描完成。工具會回報它所辨識的每一張影像的格式與像素尺寸。
- 下載你需要的 JPG 或 PNG 檔案。每張支援的圖片都會有自己的下載連結;原始 PDF 不會被修改。
下載連結是暫時的。當你選擇另一個檔案或關閉工具時,這些連結就會立即釋出,因此請在離開頁面之前儲存想保留的檔案。此工具從不宣稱來源文件可信賴,也從不要求密碼,因此受保護或毀損的 PDF 會直接使掃描失敗,而不是悄悄產生損壞的影像。
此工具能從 PDF 還原哪些內容
並非所有內嵌的圖片都能還原。擷取工具對於要解碼的色彩空間、位元深度、篩選器與遮罩組合非常嚴格,因為在缺少參數時猜測,通常會產生顏色或內容錯誤的檔案。它能妥善處理的兩種情況,涵蓋了大多數日常的照片與掃描檔。
| 儲存格式 | 編碼細節 | 取得內容 | 備註 |
|---|---|---|---|
| DCTDecode | PDF 內部的 JPEG 串流 | 原始 JPG 位元組 | 儲存的承載資料會原樣匯出,不進行重新壓縮。 |
| FlateDecode | 8 位元 DeviceRGB,無遮罩,無 DecodeParms | PNG | 在本機解壓,以 canvas 上色後編碼為 PNG。 |
| FlateDecode | 8 位元 DeviceGray,無遮罩,無 DecodeParms | PNG | 處理流程與 RGB 相同,但像素為灰階。 |
| JPXDecode、JBIG2、LZW、索引色、CMYK、軟遮罩、影像遮罩、預測鏈 | 更複雜的編碼方式 | 略過 | 會回報略過的結果;不會以靜默方式錯誤解碼檔案。 |
DCTDecode 能夠以 JPG 形式匯出的原因,在於這些位元組本身已經是有效的 JPEG 檔案——PDF 包裝只是把它們儲存在一個帶有標記的物件中。相對地,FlateDecode 是一種通用的壓縮位元組串流。原始的 Flate 串流並非一般應用程式能開啟的獨立影像檔,因此瀏覽器會解開像素緩衝區,並重新編碼為 PNG。選擇 PNG 是因為它為無失真格式,代表解開後的像素能原封不動地抵達你的磁碟。如需進一步了解解壓縮步驟,可以參考 MDN DecompressionStream 文件。
為何部分影像物件會被略過而非解碼
PDF 允許使用各式各樣的影像儲存技巧,而其中許多在不知道原始顏色狀態的情況下並不安全地直接解碼。軟遮罩會在圖片之上疊加透明度;影像遮罩會利用 alpha 通道自背景中裁切形狀;JPXDecode 使用的是另一種完全不同的編解碼器 JPEG 2000;JBIG2 適用於雙階掃描;索引色彩空間會指向另一個必須同時存在的調色盤表格;鏈式篩選器則結合了兩道壓縮程序。若工具將這些情況當作一般的 RGB Flate 串流來解碼,你就會得到長寬比錯誤、伽瑪錯誤,或像素錯亂的圖片。
工具會在配置大型輸出緩衝區之前,先強制執行一組安全預算,當超出這些預算時,略過便是安全的結果。PDF 本身上限為 25 MB,候選數量有上限,單張圖片的限制包括任一邊最大 12,000 像素,以及每張影像最大 40 megapixels。所有影像的總像素數上限為 100 megapixels,解碼後的 Flate 位元組串流上限為 100 MB。受密碼保護的檔案、毀損的檔案,或使用不支援編碼方式的檔案,將不會針對該物件產生下載。
重複的間接影像參考只會被檢查一次。若同一張圖片出現在十個頁面上,它仍算是一個儲存素材——而不是十個獨立的下載——因此結果列表保持精簡。這是個小而實用的細節:它能告訴你文件何時重複使用了標誌或頁首圖形,而不是在每個頁面重新嵌入一份新副本。
擷取與將頁面轉換為影像的差異
了解擷取在何時是正確的工具、何時該使用整頁轉換,會有所幫助。兩者會產生不同的檔案,用途也不同;用錯了,往往會有人問為什麼文字變成一張模糊的圖片。
| 若你需要…… | 請使用 | 原因 |
|---|---|---|
| 原本放入 PDF 中的 JPG 原檔 | Extract Images from PDF | 儲存的位元組在不重新渲染的情況下匯出。 |
| 並非以 JPG 形式儲存的簡單 RGB 或灰階照片 | Extract Images from PDF | 在本機解壓後存為 PNG,不進行重新壓縮。 |
| 將每個頁面擷取為包含文字與向量圖的完整圖片 | PDF to PNG 或 PDF to JPG | 頁面轉換會以你選定的比例渲染整個可見頁面。 |
| 取得乾淨的標誌或簽名,而不是周圍頁面的螢幕擷取 | Extract Images from PDF | 你取得的是內嵌素材,而不是已被點陣化的頁面。 |
以一個具體例子來說明,想像一份兩頁的報告,第一頁含有一張 1,600 乘 1,200、72 DPI 的 JPG 照片,第二頁含有一個被軟遮罩包覆的 CMYK 標誌。擷取會把照片以 1,600 乘 1,200 的 JPG 交給你,並以明確訊息略過該標誌,指出其編碼方式不受支援。另一方面,頁面轉換工具則會給你每個頁面的圖片,包含文字欄與頁尾。同一份文件,卻產生截然不同的兩種輸出。
下載後的快速檢查
掃描完成且檔案已存到磁碟後,花一分鐘確認下載的內容與你預期還原的內容一致。先開啟最大的 JPG,在作業系統的檔案內容中檢查它的像素尺寸。未經重新壓縮匯出的儲存 JPG,應會回報 PDF 影像字典所宣告的精確尺寸。若尺寸正確但畫面看起來偏淡,該 PDF 可能使用了工具未進行正規化的標記色彩空間——在依賴該檔案之前,請開啟來源文件並以視覺方式比對。
對於由 FlateDecode 串流所產生的 PNG,該檔案應能在任何影像檢視器中開啟且不出現警告。請將下載檔案的尺寸與工具回報的內容進行比對,並以視覺方式檢查畫面沒有任何缺漏。重複的間接參考在結果列表中只會出現一次,因此若你預期在三個頁面上看到某個標誌,結果卻只出現一次,這代表文件本身的設計如此,而非掃描的錯誤。
請保留原始 PDF,直到確認下載無誤。工具從不修改你上傳的檔案,也不會保留任何伺服器端的副本——一旦你選擇另一個檔案或關閉分頁,暫時的下載連結就會立即釋出;若要重新掃描,唯一的做法是以同一份本機文件再次開啟工具。
若工具略過了多張影像,這代表該 PDF 使用了瀏覽器工具無法單獨安全解碼的壓縮或色彩技巧。具備完整 PDF 影像函式庫的專用桌面應用程式有時能還原更多內容,但它同樣需要安裝,而且你必須信任它能處理該檔案。對於只需要快速、在本機掃描明顯圖片的情境——例如型錄、講義簡報、含有少量照片的報告——瀏覽器的方式通常是最快取得可用素材的途徑。
若你正在權衡各種選項,How to Extract PDF Pages in Bluebeam Revu 一文對此有詳細說明。
若你正在權衡各種選項,How to Convert a PDF to a Single Long Image 一文對此有詳細說明。