一張圖片放在 PDF 內部,可以透過把影像物件的串流換成一個極小的白色 JPEG 來替換,而頁面繪圖指令和資源參照保持不變,這就是 從 PDF 移除圖片 背後的完整機制。這個工具接受一個上限 25 MB 的 PDF,掃描每一個嵌入的影像 XObject,並用一個儲存在同一個參照下的 1 by 1 白色 JPEG 來重寫符合資格的影像。由於原始的間接物件名稱會被保留,頁面本身不需要被重寫或點陣化,這表示文字、連結和頁面幾何都會保持在來源檔案中原本的位置。取捨在於精確度:只有未遮罩的 8 位元 DCTDecode JPEG,且色彩空間為 DeviceRGB 或 DeviceGray、沒有 DecodeParms 的影像才符合資格。如果文件包含即使是使用不同編碼的影像,包括索引色盤、CMYK、JPX、JBIG2、LZW、影像遮罩或任何其他形式,工具會拒絕處理該工作,並且完全不產生檔案。這種全有或全無的規則是核心的設計選擇。它可以避免下載到的檔案介面顯示圖片已移除,實際上卻有複雜影像被悄悄留在原處的情況,但這也表示這個方法最適合由一般置入的相片和掃描檔所構成的文件,而不是混合了 JPEG、向量圖和複雜透明效果的混合格局。

為什麼瀏覽器本地端做法對圖片移除很重要
大多數想要把圖片從 PDF 中抽掉的人,通常是在做以下三件事之一:縮小檔案大小、重複使用不含圖片的文字版面,或在分享前移除照片。這些理由都不需要雲端服務來處理檔案,而且每次編輯一個小東西就要上傳文件,會在網路和服務提供者的儲存空間上造成不必要的曝險。
「從 PDF 移除圖片」工具把整個工作流程保留在本地裝置上。PDF 由瀏覽器端的程式庫讀取,符合資格的影像串流會被替換為合成的白色 JPEG,檔案會被儲存,然後由本站其他頁面轉換所使用的同一個 PDF 檢視器重新開啟並重新驗證。在這個來回過程中,沒有任何東西會離開瀏覽器分頁。限制和行為會列在工具說明本身,而不是埋在隱私權政策中,因此支援的影像格式、檔案大小上限,以及拒絕處理的行為,在你挑選檔案之前就可以看見。
工具如何用白色像素取代符合資格的圖片
當你載入一個 PDF 時,工具會走訪文件中的每一個間接物件,並尋找影像 XObject。對於每一個符合支援格式的物件,也就是未遮罩、8 位元、DCTDecode、DeviceRGB 或 DeviceGray、且沒有 DecodeParms 的影像,它會在記憶體中產生一個極小的白色 JPEG,並把它指派為同一個物件參照上的替換串流。物件的識別碼保持不變,因此任何繪製該影像的內容串流仍然會解析到一個有效的物件。改變的是渲染器在繪製頁面時所讀取的內容。
這就是為什麼產生的 PDF 開啟時不會發生錯誤。一種更天真的做法,例如從資源字典中刪除影像物件,會讓頁面的繪圖指令指向一個不存在的物件,並可能損壞文件。透過保留參照、只替換串流內部的位元組,頁面結構會被保留,而可見的像素則變成一個純白的方塊。這個替換本身使用了 pdf-lib 中的 PDFRawStream 型別,把現有的物件參照指向一個新建立的白色 JPEG,因此交叉參照表不需要被重寫。
從單一 PDF 檔案移除圖片
- 開啟「從 PDF 移除圖片」頁面,並點擊檔案選擇器從你的裝置中挑選一個 PDF。檔案大小上限為 25 MB。
- 等待工具列舉檔案中每一個影像 XObject,並確認它能夠解析文件結構。
- 點擊 移除符合資格的影像。工具會對每一個嵌入的影像執行全有或全無的相容性檢查。
- 如果即使是只有一個影像未通過檢查,工具會停止並回報該文件無法處理。不會出現下載。
- 如果檢查通過,會顯示重寫後 PDF 的預覽。請開啟每一個原本有圖片的頁面,確認白色替代內容在上下文中看起來正確。
- 只在檢查過之後才下載新的 PDF。下載是在本地產生,絕不會經過伺服器。
工具會與不會動到你 PDF 中的內容
資格規則刻意設計得很嚴格,了解這些規則可以避免徒勞的嘗試。下表整理了工具對它所遇到的每一種影像會做什麼處理。
| 來源 PDF 中的影像類型 | 處理結果 |
|---|---|
| 未遮罩的 8 位元 DCTDecode JPEG,DeviceRGB 或 DeviceGray,沒有 DecodeParms | 在相同參照下替換為一個 1 by 1 白色 JPEG |
| 索引色盤 JPEG | 整個工作被拒絕,不產生輸出 |
| CMYK JPEG | 整個工作被拒絕,不產生輸出 |
| JPXDecode (JPEG 2000)、JBIG2、LZW、Flate 或其他濾鏡 | 整個工作被拒絕,不產生輸出 |
| 帶有遮罩或 SMask 的影像 | 整個工作被拒絕,不產生輸出 |
| 直接繪製在內容串流中的內嵌影像 | 不列入可移除範圍;保持原樣不動 |
| 非影像 XObject,例如 form XObject | 保持原樣不動 |
內嵌影像是最常見的意外情況。有些 PDF 產生器會把小型圖示直接嵌入內容串流,而不是做成獨立的 XObject,而目前版本的工具並不把這些納入處理範圍。如果在一次成功的執行後仍有小型圖片殘留,幾乎可以確定那是內嵌影像,而不是被遺漏的 XObject。
圖片移除何時適用,以及何時需要不同的工具
這個方法適合一般的文件掃描和報告,其中圖片是簡單的 JPG 置入,而其他內容都是文字、連結或向量圖。當你想要執行下列操作時,這是一個很好的搭配:
- 在分享 PDF 之前,先移除封面照片。
- 從簡報 PDF 中移除頁首或頁尾的標誌。
- 在列印前降低訓練講義的視覺負擔。
- 準備一個保留文字和連結完整、方便重新設計或翻譯的版面。
當嵌入的圖片使用複雜透明效果、索引色盤或非 JPEG 濾鏡,或目標是移除位於其他內容下方的影像時,這個方法就不適合。在這些情況下,工具會拒絕該工作,而你會需要一個完整的 PDF 編輯器或點陣化遮蔽的工作流程。如需更深入了解常見的本地端工作流程,請參閱 如何在本地端刪除 PDF 檔案中的圖片。
在你信任輸出之前先檢查它
白色替代並不是像素級的完美移除。白色方塊位在與原始圖片相同的位置,因此原本被影像部分遮住的其他頁面內容現在會顯示出來,而原本繪製在影像上方的內容則仍然存在。由此衍生出兩個實際的後果:
- 如果一張圖片原本與一個標題重疊,那麼當標題原本繪製在影像上方時,現在標題後面會留下一個小的白色間隙。
- 如果一張圖片原本被註解或向量圖形部分覆蓋,現在看起來會不一樣,因為白色方塊比原始圖片來得小。
工具在儲存後也會執行結構檢查。它會重新開啟檔案,並確認頁數和影像物件數量仍然符合預期。這些檢查可以抓出常見的毀損檔案結果,但它們並不保證視覺結果符合你的預期。請開啟每一個原本包含圖片的頁面,仔細捲動檢視,並在把檔案送到任何敏感的地方之前先確認結果。如果你因為法律、安全或隱私理由而移除圖片,請改用專門的遮蔽工作流程。這個工具本身並不會繞過密碼、保留數位簽章、修復損壞,或認證法律上的遮蔽。
如果你正在權衡各種選項,在瀏覽器中移除 PDF 密碼以便編輯 對此有詳細說明。