從 PDF 複製圖片而不損失品質,意思是匯出 PDF 已經儲存的實際圖片位元組,而不是對頁面重新截圖。PDF 將圖片以獨立物件的形式嵌入在文件檔案中,而專為此目的打造的擷取工具會直接讀取這些物件,將原始的 JPEG 內容(針對 DCTDecode 串流)交給你,或是從儲存的 RGB 或灰階像素重建出 PNG(針對簡單的 FlateDecode 串流),過程中絕不會透過螢幕擷取的方式重新渲染頁面。最終得到的 JPG 或 PNG,會與文件中原圖的尺寸和像素資料完全一致。Extract Images from PDF 的運作方式正是如此:它會在瀏覽器中掃描有範圍的嵌入圖片物件,辨識出受支援的類型,並為每一個產生獨立的下載連結。這與將 PDF 頁面轉成圖片的方式有本質上的差異——後者會把整個頁面(包括文字和向量圖)一起繪製成單一的光柵影像,並可能在你真正想要的圖片周圍引入模糊、壓縮失真或不必要的頁面邊框。

為什麼頁面截圖會降低圖片品質
當你在檢視器中開啟 PDF 並擷取螢幕畫面時,你擷取到的其實是螢幕在某個縮放等級下對頁面的詮釋,而不是檔案內部的圖片。這一次重新渲染會在多個階段造成品質損失。檢視器會將頁面縮放以符合你的視窗大小,作業系統會以你的顯示器當下的 DPI 設定進行合成,最後截圖工具會把畫面緩衝區壓縮成 PNG 或 JPG 才存檔。PDF 內部的實際圖片物件完全沒有被動到,而你手上則多了一份降級過的複本,而且這份複本永遠無法完整重現原本的螢幕區域。
提高解析度截圖或許有點幫助,但也只能到某個程度。多數作業系統會把截圖上限設在螢幕解析度,因此擷取到的像素網格是固定的。無論你裁切得多仔細,從 96 DPI 的截圖中都無法還原出原始 PDF 中嵌入的 300 DPI 照片。將 PDF 以自訂倍率渲染的頁面轉檔工具也會遇到同樣的上限:它們重新取樣的是頁面,而不是圖片物件,而輸出格式的任何壓縮都會再丟失更多細節。
擷取嵌入物件則能完全跳過上述所有步驟。圖片位元組從未經過螢幕緩衝區或重新取樣濾鏡;工具直接從 PDF 結構中讀取它們,辨識出串流類型,再把原始資料交給你。
Extract Images from PDF 如何保留原始品質
這個工具圍繞著 PDF 常見的兩種簡易圖片儲存方式所打造。第一種支援的類型是 DCTDecode,也就是 PDF 規範中嵌入式 JPEG 串流的名稱。當工具找到這類物件時,它會原封不動地匯出儲存的 JPEG 位元組,而不是把圖片渲染出來再重新壓縮,因此你下載到的 JPG 就是文件原本儲存的圖片內容,沒有任何世代損失。這點很重要,因為 JPEG 只要曾被儲存一次,若工具將它解碼成像素再重新編碼,看起來就會明顯變差;保留原始串流可讓品質與檔案中所放置的內容完全相同。
第二種支援的類型是使用 8 位元 DeviceRGB 或 DeviceGray 色彩的簡單 FlateDecode 圖片。這些串流並非一般應用程式能開啟的獨立檔案,因此瀏覽器會使用 DecompressionStream 將有範圍的原始像素資料解壓縮,放到本機 canvas 上,再編碼成 PNG 供下載。這裡使用 PNG 是因為它是無損格式,這代表你取回的像素網格會與 PDF 中儲存的像素網格完全一致。
此工具會列舉間接圖片 XObject,並以 pdf-lib 的 PDFRawStream 原始碼 作為原始串流如何暴露的參考。同一個間接圖片引用只會被檢查一次,因此同一個儲存的素材不會以一組令人困惑的重複下載出現。
如何在不損失品質的情況下從 PDF 複製圖片
請按照下列步驟在 Extract Images from PDF 中以原始解析度還原嵌入的圖片:
- 從你的裝置中選擇一個不超過 25 MB 的本地 PDF。較大的檔案會在任何掃描開始之前就被拒絕,所以如果無法確定大小,請先確認檔案大小。
- 選擇 Extract images,在瀏覽器中掃描有範圍的嵌入圖片物件。PDF 從不離開你的分頁;掃描是針對你剛選擇的位元組進行。
- 檢視每個偵測到的圖片所顯示的格式與尺寸。DCTDecode 項目會列出可下載的儲存 JPG 位元組;FlateDecode 的 RGB 或灰階項目則會列出新編碼的 PNG。
- 使用每張圖片的下載連結來下載支援的 JPG 或 PNG。當你選擇其他檔案或離開工具時,暫存 URL 就會被釋放,因此請立即儲存所需的檔案。
- 開啟下載的檔案,並與你預期還原的素材進行比對。檢查尺寸和外觀,只有在它符合你原本想複製的圖片時再使用該檔案。
作為對照,相關指南 How to Extract PDF Pages as Images in Your Browser 介紹的是頁面快照的工作流程,適用於你需要整個頁面而非嵌入物件的情況。
支援的圖片類型與略過的內容
PDF 的圖片儲存方式有許多合法的變化,而這個工具明確指出哪些類型它可以安全解碼。下表摘要列出它接受與略過的內容,以及略過的原因。
| 編碼類型 | 支援 | 輸出格式 | 原因 |
|---|---|---|---|
| DCTDecode(嵌入式 JPEG) | 是 | 原始 JPG 位元組 | 儲存的 JPEG 串流會直接匯出,不重新壓縮。 |
| FlateDecode、8 位元 DeviceRGB、無遮罩、無 DecodeParms | 是 | PNG(由原始像素編碼而成) | 原始像素串流會在瀏覽器中解壓縮,並儲存為無損 PNG。 |
| FlateDecode、8 位元 DeviceGray、無遮罩、無 DecodeParms | 是 | PNG(由原始像素編碼而成) | 原始像素串流會在瀏覽器中解壓縮,並儲存為無損 PNG。 |
| JPX(JPEG 2000) | 否 | 略過 | 解碼需要 JPEG 2000 codec,而瀏覽器並未提供。 |
| JBIG2 | 否 | 略過 | 解碼需要 JBIG2 codec,而瀏覽器並未提供。 |
| LZW | 否 | 略過 | 不使用瀏覽器對此篩選器的解壓縮功能,以避免色彩錯誤。 |
| 索引調色盤、CMYK、軟遮罩、影像遮罩、預測器或串接篩選器 | 否 | 略過 | 使用錯誤的色彩空間解碼,或回傳為損壞檔案,因此予以略過。 |
略過的物件會被明確回報,而不會以一個佔位的下載靜默略過,因此你能判斷你想要的圖片究竟是根本不在 PDF 中,還是使用了本工具未涵蓋的編碼方式。
擷取嵌入圖片 vs 轉換整個頁面
選擇哪種方法,取決於你需要的是嵌入的素材,還是完整可見的頁面。這兩種工具解決的是不同的問題,也會產生不同的檔案。
| 方法 | 擷取內容 | 品質結果 | 最適合的情境 |
|---|---|---|---|
| 擷取嵌入圖片(本工具) | 儲存在 PDF 中的實際圖片位元組 | 保留原始解析度;不含周圍的頁面內容 | 還原文件中放置的照片、標誌、掃描檔或圖形 |
| 將 PDF 頁面轉換為圖片 | 整個可見頁面的光柵快照,包括文字和向量圖 | 頁面層級的保真度;解析度取決於所選倍率 | 將完整頁面作為單一圖片分享或列印 |
如果你的目標是素材本身,請使用擷取的方式。如果你的目標是取得一張包含文字、圖表與圖片的整頁可分享圖片,請使用頁面轉檔工具,例如 PDF To PNG 或 PDF to JPG Converter。
安全限制及其交互作用
在工具配置大型輸出緩衝區之前,會檢查數個相互影響的限制。PDF 本身必須在 25 MB 或以下。每張候選圖片會檢查單邊最大 12,000 像素、單張圖片最多 40 megapixels,以及所有候選圖片合計 100 megapixels 的上限。整個掃描過程中,解碼後的 Flate 圖片資料上限為 100 MB。設定這些上限的原因在於,若對惡意或異常複雜的 PDF 進行無限制解碼,可能會耗盡瀏覽器記憶體或產生極大的輸出檔案。
若要了解單張與總量上限如何交互作用,請考慮一張寬 8,000 像素、高 5,000 像素的圖片。兩邊相乘的結果如下:
8,000 px × 5,000 px = 40,000,000 px = 40 MP
這個結果正好達到單張圖片的上限,因此這個尺寸是本工具能回傳的最大單一素材。相比之下,單邊 12,000 px 的尺寸上限理論上可允許 12,000 × 12,000 = 144,000,000 px = 144 MP,但單張 40 MP 限制會先生效,拒絕任何超過此限制的內容。100 MP 的總量限制則限制了單次掃描可擷取的大型圖片數量,而 100 MB 的 Flate 解碼預算則防止簡單的 RGB 或灰階串流無限制增長。
受密碼保護、檔案損壞或異常複雜的 PDF,仍可能在上述任一階段失敗。本工具不會繞過加密、不會修復損壞的檔案、不會驗簽章,也不會對來源文件是否可信做出任何聲明。若掃描結果沒有可用內容,首先應檢查的是檔案大小、PDF 是否加密,以及你要找的圖片是否使用了上方列出的不支援編碼之一。
When You Need a Different Tool
Extraction is the right choice when the picture you want was placed in the PDF as its own object. It is the wrong choice when the thing you are looking for is actually part of the page composition rather than a stored image, for example a vector logo drawn directly with PDF drawing operators, a text run that was rasterized into the page background, or a chart that was rendered rather than embedded. None of those become accessible as a downloadable image, because there is no image object to extract.
In those cases, a page converter is the correct fallback. PDF To PNG gives you a lossless render of every page as a separate PNG with exact output dimensions; PDF to JPG Converter produces a JPG of every page at an adjustable scale and quality. Both run locally in your browser with no upload, so the same privacy property carries over.
Keep the original PDF alongside any image you recover, because the extracted file is a copy of the embedded asset, not a replacement for the source document. Inspect the downloaded dimensions and appearance, and use the downloaded file only after it matches the asset you expected to recover from the PDF.
Related reading: How to Extract All Images From a PDF in Your Browser.