從 PDF 匯出圖片為 JPG,意思是取出文件內嵌的原始 JPEG 位元組,而不是對 PDF 頁面進行截圖。大多數包含照片、標誌或掃描影像的 PDF,會將這些圖片儲存為 DCTDecode 影像物件——PDF 規範中內嵌 JPEG 串流的名稱——這些位元組可以直接匯出,無需重新編碼。一個在本地掃描 PDF 並識別 DCTDecode 物件的瀏覽器工具,可以將原始 JPG 資料交給你下載,因此你儲存的圖片與 PDF 原本包含的壓縮資料完全相同。問題在於,並非 PDF 中的每張圖片都是 JPEG。許多是以 FlateDecode 原始像素串流、JPXDecode (JPEG 2000)、JBIG2、LZW、索引色盤或 CMYK 色彩儲存,這些無法僅透過重新命名位元組就轉成有效的 JPG。了解你的圖片屬於哪種情況,決定了你會得到 JPG、PNG,還是跳過報告,這是在開始前需要理解的重點。

export images from pdf to jpg
無需上傳即可將圖片從 PDF 匯出為 JPG

「匯出為 JPG」在 PDF 內部的真正含義

PDF 是一個結構化的容器:它以 Adobe PDF 參考手冊中定義的格式描述頁面、字型、向量路徑和影像物件。當設計師將照片放入版面時,檔案可以將圖片以儲存的 JPEG (DCTDecode) 形式內嵌,或是將其光柵化為原始像素串流,再用 Flate 演算法壓縮。這兩種儲存路徑在渲染出的頁面上看起來一模一樣,但在磁碟上卻完全不同。

如果你特別需要 JPG 輸出,只有第一種情況——DCTDecode——能直接給你。PDF 儲存的影像資料就是一個 JPEG 檔案。瀏覽器工具只是取出這些位元組,將其包裝成下載容器,結果可以在任何影像檢視器中開啟。沒有重新渲染、沒有重新壓縮、與文件原本包含的內容相比沒有品質損失。

對於第二種情況——FlateDecode——儲存的資料是 deflate 壓縮的像素緩衝區,而不是 JPEG。無法在不重新編碼的情況下從中產生 JPG,而 從 PDF 擷取圖片工具則選擇將原始像素解壓縮並寫成 PNG,因為 PNG 是這些像素真正的無損容器。這個決定讓圖片保持原貌,而不是假裝原始串流是它從未是的東西。

何時適合使用基於瀏覽器的匯出

當你想要的圖片已經以可識別的圖片物件形式存在於 PDF 中時,這種本地匯出方式非常適合:手冊中的產品照片、合約上的掃描簽名、報告頂部的標誌、從其他工具匯出的圖表。你要的是素材本身,而不是包圍它的頁面的模糊照片。

當 PDF 包含你不希望送到伺服器的機密資料時,這也是一個合適的選擇。掃描、解碼、PNG 編碼和下載連結的建立,全部都在當前的瀏覽器分頁內完成。文件從不離開裝置,這對發票、醫療表單、內部報告或任何無法上傳的檔案都很重要。

當你實際需要的是整個可見頁面——文字、標題、向量線條全部——儲存成一張圖片時,這就不適合了。那是另一項需要頁面渲染器的任務。

如何在瀏覽器中將 PDF 圖片匯出為 JPG

  1. 在瀏覽器中開啟「從 PDF 擷取圖片」,選擇你要掃描的本地 PDF。檔案大小必須為 25 MB 或更小;超出此限制的檔案會在工具配置輸出緩衝區之前被拒絕。
  2. 點擊擷取圖片。工具會使用 pdf-lib 列舉文件中的間接影像 XObject,這個函式庫也驅動本地掃描,並列出能安全識別的項目。
  3. 對於找到的每個 DCTDecode 物件,原始 JPEG 位元組會原封不動地匯出。對於每個簡單的 8 位元 FlateDecode DeviceRGB 或 DeviceGray 串流,像素會透過瀏覽器內建的 DecompressionStream API 解壓,並在本地畫布上編碼為 PNG。
  4. 查看每個項目旁顯示的格式和像素尺寸。如果你只想要 JPG,請下載標示為 JPG 的項目,跳過 PNG 的項目。
  5. 點擊每個下載連結,將檔案儲存到你的電腦。臨時下載 URL 會在你選擇另一個 PDF 或離開工具時立即釋出。
  6. 在任何影像檢視器中開啟儲存的 JPG,確認它符合你預期的素材。

JPG、PNG 或跳過:每種圖片類型的處理方式

PDF 影像儲存有許多合法的變化形式,而這個工具並不假裝它們可以互換。下表精確顯示工具在掃描過程中對每種儲存類型的處理方式:

PDF 儲存類型工具的處理方式輸出格式
DCTDecode原封不動地匯出儲存的位元組JPG
FlateDecode,8 位元 DeviceRGB,無遮罩,無 DecodeParms解壓原始像素並在本地編碼PNG
FlateDecode,8 位元 DeviceGray,無遮罩,無 DecodeParms解壓原始像素並在本地編碼PNG
JPXDecode (JPEG 2000)跳過並回報
JBIG2跳過並回報
LZW 或鏈式濾鏡跳過並回報
索引色盤、CMYK、軟遮罩、影像遮罩、預測器跳過並回報
對同一圖片的重複間接參考僅檢查一次一個下載

如果某頁只包含文字和向量路徑,該部分的掃描結果清單會是空的。工具尋找的是影像物件,而不是頁面內容。

工具在啟動前強制執行的限制

在工具配置大型輸出緩衝區之前,會先檢查安全預算,因此惡意或過大的 PDF 無法耗盡你機器的記憶體。固定限制如下:

限制項目數值
PDF 檔案大小最大 25 MB
每張圖片的最大尺寸12,000 像素
每張圖片的最大百萬像素數40 MP
所有圖片的總百萬像素數100 MP
解碼後的 Flate 影像資料上限100 MB
候選數量有限制(具體數字不可由使用者設定)

如果任何圖片超過單張尺寸、單張百萬像素數或總百萬像素數預算,該限制會在配置輸出緩衝區之前強制執行,因此不會產生截斷的檔案。25 MB 的 PDF 上限和 100 MB 的解碼 Flate 上限運作方式相同。

工具不會做的事

它不會繞過 PDF 加密、不會修復格式錯誤的檔案、不會驗證數位簽章,也不會對來源文件是否可信做出任何聲明。受密碼保護或損毀的 PDF 會失敗,而失敗會被回報,而不是被掩飾。也不存在伺服器後備方案:如果瀏覽器無法完成特定影像的解碼,該影像會被跳過,而不是被送到遠端端點。

這也不是一個遮蔽工具。匯出的 JPG 或 PNG 是文件中原先內嵌的素材;中繼資料、隱藏圖層和周圍頁面中的任何敏感內容,仍然保留在原始 PDF 中。如果目的是從文件中移除影像,而不是儲存一份副本,那麼工作流程就會不同。

驗證你取回的影像

在依賴下載的 JPG 之前,請開啟它並檢查三件事:像素尺寸與工具回報的一致、檔案能在你常用的影像檢視器中無錯誤地開啟,以及圖片看起來與你在 PDF 中記憶的一樣。DCTDecode 匯出的是文件的原始資料,因此你應該看到完全一致的結果。對於從 FlateDecode 串流產生的 PNG,顏色應該與頁面完全一致,因為沒有發生重新渲染——只是像素緩衝區被解壓並重新封裝。

在確認素材符合你的需求之前,請將原始 PDF 與匯出的檔案一起保留。如果尺寸不對、圖片是空白的,或顏色看起來有誤,儲存類型很可能是工具跳過的那幾種——這是一個有用的訊號,而不是錯誤。我們在不損失品質地從 PDF 複製圖片指南中更深入地說明了相同的工作流程。

何時頁面轉換器是更好的選擇

如果你需要的素材是完整的可見頁面——文字、標題、頁尾、向量箭頭、整體版面——那麼合適的工具是頁面渲染器,而不是影像物件擷取器。PDF 轉 JPG 轉換器會以你選擇的縮放和品質,將每個頁面渲染為 JPG 快照,而 PDF 轉 PNG 工具則以無損像素執行相同的操作。如果要將所有頁面堆疊成一張垂直 PNG,可以使用 PDF 轉長圖 工具。

決定很簡單:當你想要放置在 PDF 中的圖片時,使用「從 PDF 擷取圖片」。當你想要PDF 頁面的圖片時,使用頁面轉換器。兩者都在本地執行,兩者都產生 JPG 或 PNG 輸出,但輸入和結果的意義不同。

相關閱讀:無需上傳即可將大型 JPG 轉為 PDF