您可以在不上傳檔案的情況下壓縮 PDF,只要執行一個僅限瀏覽器使用的壓縮工具,就能讓文件的每個位元組都保留在當前的分頁中。Compress PDF 工具會讀取一個上限為 25 MB 的本地 PDF,找出可在相同頁面位置安全重新編碼的內嵌 JPG 影像物件,並且只替換那些確實能縮小的影像串流。讀取、解碼、重新編碼、重組與驗證全部都在您的瀏覽器中使用 pdf-lib 和 PDF.js 完成,因此原始檔案絕不會傳送到遠端伺服器。如果工具無法產生更小且有效的 PDF,便會誠實地回傳錯誤,且絕對不會提供下載連結。頁數、文字、連結、向量物件、表單、註解與中繼資料在結構上都保持完整。它的限制在於範圍:這是一個刻意窄化的、以影像為主的方法,這意味著純文字的 PDF 通常無法縮小,而最終的大小完全取決於原始影像以及 PDF 的結構性負擔。對於一般的掃描文件或照片佔多數的文件,這通常足以讓檔案大小降到電子郵件附件的限制以內。

為什麼大多數 PDF 壓縮工具都需要上傳
網路上大多數免費的 PDF 壓縮工具都會將您的檔案傳送到遠端伺服器。這次上傳正是實現任意串流最佳化的關鍵:伺服器可以分析每個物件、重新壓縮不同的濾鏡鏈、縮減影像取樣,甚至重寫整份 PDF。這種靈活性是有代價的。您上傳的任何文件都會短暫地存放在您無法掌控的基礎設施上,這對於合約、稅務表單、病歷或已簽署的協議來說並不適合。如果檔案已經存放在您的本地磁碟上,僅僅為了讓它變小就透過公共網路傳送是沒有必要的。本地瀏覽器壓縮工具則完全跳過了這個步驟。取捨在於,僅限瀏覽器的工具在不冒著檔案損毀風險的情況下,只能安全地處理一部分的 PDF 物件,這也正是 Compress PDF 工具將自身範圍限制在合資格 JPG 影像串流的原因。
本地瀏覽器壓縮工具有何不同
本地壓縮工具完全在用戶端執行。它使用 pdf-lib 載入 PDF,列舉所有的 image XObject,將清單篩選至僅保留能安全處理的項目,在瀏覽器影像元素中解碼每個候選 JPG,將最長邊縮放至一個有界的尺寸,以平衡的品質重新編碼,將新的位元組串流與原始的進行比較,並且只有在結果確實更小時才替換內容。替換完成後,檔案會被儲存,接著以 PDF.js 重新開啟來驗證頁數,驗證通過才會出現下載連結。整個過程完全沒有針對文件本身發出網路請求。同一個瀏覽器分頁同時持有原始檔案、工作複本和驗證後的結果,而您的瀏覽器網路面板也可以確認在執行期間並未發生任何上傳。
逐步在本地壓縮 PDF
- 在瀏覽器中開啟 Compress PDF 工具,並點擊檔案選擇器來挑選一個上限為 25 MB 的本地 PDF。
- 選擇 Compress PDF,並等待工具在本地列舉內嵌的 JPG 影像物件,然後僅重新編碼合資格的影像。
- 執行完成後,閱讀頁面上所顯示的輸入與輸出大小。
- 若輸出檔案較小,點擊下載按鈕,將已驗證的 PDF 儲存在原始檔案旁邊。
- 在任何 PDF 檢視器中開啟下載的檔案,並在分享或取代原始檔案之前,以視覺方式與來源進行比較。
工具會與不會更動的項目
理解本地壓縮工具的範圍很重要,因為「壓縮 PDF」在不同的工具之間可能有截然不同的意義。Compress PDF 工具的範圍刻意窄化:它只處理未遮罩的、使用 DeviceRGB 或 DeviceGray 色彩資料的 DCTDecode JPG 影像串流。PDF 結構中的其他所有內容都會逐字保留。
| PDF 屬性 | 本地壓縮工具中的行為 |
|---|---|
| 頁數 | 保留 |
| 文字內容 | 保留 |
| 向量物件與表單欄位 | 保留 |
| 連結、註解、中繼資料 | 保留 |
| 未遮罩的 DCTDecode JPG(DeviceRGB 或 DeviceGray) | 僅在新位元組更小時重新編碼 |
| JPX、CMYK、Indexed、遮罩、ImageMask JPG | 略過,保留原始內容 |
| 帶有解碼參數的 JPG | 略過,保留原始內容 |
這個窄化的範圍正是檔案能夠在不上傳的情況下被處理的原因。相比之下,更廣泛的最佳化工具通常會重寫內容串流、縮減字型取樣、合併物件或更動中繼資料,這需要嚴謹的伺服器端分析以及一份存在於使用者裝置之外的工作複本。
限制、誠實的結果與何時該改用其他工具
此工具設有三項硬性上限:單一 PDF 上限為 25 MB、合資格的影像物件最多 80 個、以及其解碼的影像加總最多 100 百萬像素。超過這些上限的檔案會在處理前遭到拒絕。即使在上限之內,最終大小仍取決於是否存在合資格的 JPG,以及品質 0.70、1400 像素的重新編碼是否真的小於原始位元組串流。含有原始照片的掃描文件通常能得到不錯的壓縮效果。純文字的 PDF、以向量繪圖構成的檔案,或以 CMYK 印刷資產為主的文件則通常不會。
在那些無法縮小的情況下,工具會誠實地回傳錯誤且不提供下載。這其實是正確的結果,因為以新檔名輸出一份大小相同的檔案會誤導使用者。這個有限範圍的工具是為了一般日常情境所設計:當一份掃描文件或照片佔多數的 PDF 需要通過電子郵件附件的大小限制、而檔案的隱私性比追求絕對最小的輸出更重要時,剛好能派上用場。
若是為了符合歸檔 PDF 標準、印刷色彩管理、無失真串流壓縮或任意串流重寫,那麼像 Ghostscript 命令列管線之類的專業桌面版 PDF 最佳化工具,或付費的印刷等級工具會更為合適。本地瀏覽器工具並非要取代這些作業流程;它是針對常見情境——也就是需要讓以 JPG 為主的檔案縮到上傳限制以下——所提供的一個更快速、更注重隱私的替代方案。
隱私模型:哪些內容絕不會離開您的瀏覽器
每一步都在當前的瀏覽器分頁內執行。PDF 從本地磁碟讀取、以 JavaScript 解析、由瀏覽器的影像元素解碼、透過 canvas 管線重新編碼、重新組裝並進行驗證。沒有任何背景同步、不含文件內容的遙測酬載,也沒有遠端最佳化步驟。從 canvas 轉為 blob 的階段使用的是標準的 HTML Canvas toBlob 介面,而驗證階段則使用 Mozilla PDF.js 函式庫,兩者皆在本機分頁內執行。
就網路面板的角度來看,壓縮期間唯一發出的請求,僅限於工具本身的靜態資產,絕對不包括文件的內容。這對機密檔案而言很重要:報稅表、已簽署的法律合約、內部的人事資料,或尚未出版的稿件,都可以在完全不離開您裝置的情況下縮小。對於禁止第三方上傳受規範資料的組織來說,本地瀏覽器壓縮工具是少數仍能在以影像為主的 PDF 上產生實質縮減的安全選項之一。
當檔案無法變小時(以及為何這是誠實的)
一個在沒有任何縮小時仍承諾提供下載的本地壓縮工具,會構成誤導。Compress PDF 工具拒絕採取這種做法。如果每個合資格的 JPG 都無法縮小或基於安全考量而被略過,工具會回報此次執行、顯示誠實的錯誤訊息,並且不提供下載。這並非 bug,而是反映了一項刻意的選擇:避免把一個位元組與原始檔案相同、僅換了新檔名的檔案交給您。同樣的誠實也適用於當單一頁面中只有一張高解析度 JPG、而瀏覽器已經在品質 0.70 下使用相同的最大邊進行了壓縮:在不損及安全性的情況下,已經沒有更多位元組可以再讓步了。
如果您在以照片為主的檔案上得到無法縮小的結果,常見的原因包括:原始 JPG 已經以 JPEG 品質 0.70 或更低編碼、影像使用的是 CMYK 或 JPX 色彩而非 DeviceRGB 或 DeviceGray、影像帶有工具無法預測效果的解碼參數,或是影像被遮罩或作為 ImageMask 使用。在上述每一種情況下,正確的答案是改用其他工具,而不是強行產生下載。一開始就清楚這個界線,正是本地壓縮工具在面對來源確實含有合資格 JPG 影像時,既能保持安全又能提供實質縮減的關鍵。