先說結論
開啟 PDF 壓縮,把文件丟進去,先別改任何東西,看它告訴你什麼。它會把檔案讀一遍,擺明體積到底壓在哪裡:圖片、字型、文字和圖形,還有那些文件裡已經沒人引用的東西。這個畫面通常就把問題回答了。
體積大半是圖片,那就能省下一大塊。要是大半是字型和文字,那就省不下來,誰也省不下來。你手上是哪一種,這就是全部故事,值得花十秒看一眼。
一份 PDF 的體積到底壓在哪裡
PDF 是個容器,裡面裝著好幾類東西,而它們的可壓縮程度完全不同。
- 圖片。照片和掃描檔。一份大 PDF 裡,它幾乎總是大頭,也是唯一真有餘地的部分。
- 內嵌字型。一整套字型能有幾百 KB;只取實際用到的那些字元,就少得多。不管哪種,做這個檔案的軟體早就壓過它們了。
- 文字和向量圖形。是指令,不是畫素:畫這條線、把這個詞擺在這裡。它們本來就緊湊,也本來就壓過了。
- 已經沒人指向的物件。PDF 很會囤這種東西。編輯一份文件,往往是把改動追加在後面,而不是把檔案重寫一遍,所以某一頁的舊版本可以一直躺在裡面。重新打包檔案就會把它們丟掉。
所以,拿到 PDF 壓縮工具跟前的那兩種文件,前景完全不同。掃描檔本質上就是一疊照片,通常能小 60% 到 90%。而合同、論文或者匯出的報告是文字、圖形和字型,全都被寫它的那個軟體壓過一輪了,這種一般只能省下百分之幾,來源是重新打包、以及丟掉沒人引用的東西。
凡是連你的檔案都沒看就承諾「最高可減 90%」的工具,都是拿第一種的最好情況,去說第二種。
DPI 跟這事有什麼關係
PDF 裡存的不只是一張圖,還記著這張圖在頁面上畫多大。這就給了你一個比畫素數更有用的東西:有效解析度。
一張 4000 畫素寬的掃描圖,鋪在八英寸寬的紙上,等於每英寸 500 個畫素。螢幕能顯示的大約是 100。一臺不錯的辦公印表機工作在 300,再多也用不上。超出這個數的全是細節,而這份文件將來的任何一種用法都顯示不出來,偏偏它往往就是檔案的大頭。
所以一個明白事理的 PDF 壓縮工具,問你要的是 DPI,不是一個品質百分比。它先把超過你那個數字的畫素扔掉,因為那些畫素換來的東西誰也看不見,然後才開始動真正的畫質。
粗略的參考:只在螢幕上讀的文件用 150 DPI,要列印的用 200 到 300,誰也不會留著的草稿用 72 到 100。按圖片實際畫多大來衡量,也正是為什麼一個放得很小的 logo 不會跟整頁掃描檔被同等對待,它本來就已經貼著自己的有效解析度了,沒什麼可拿的。
壓縮該動什麼,不該動什麼
圖片要重新編碼,所以那部分會掉一點。除此之外什麼都不該動,而你手上那個工具守不守這條,值得核一核:
- 文字還是文字。選得中、搜得到、複製得走。一個把頁面壓平成圖片的壓縮工具,能給你一個非常小的檔案,也順手毀了這份文件:搜不了,螢幕閱讀器讀不了,而且再也回不去了。
- 字型保持完整。替換字型會改變這份文件在別人機器上的樣子,而 PDF 存在的意義,恰恰就是防止這件事。
- 向量圖形原樣複製。它本來就小,把它光柵化只會又變大又變差。
- 表單、連結、書籤、無障礙結構和附件都要帶過去。這些在重寫過程中很容易丟,而且往往要等到有人需要它的那天才被發現。
還有一條相關的規矩,壓縮工具該守,而很多沒守:一張圖重編之後要是並不比原來小,那就把原來的位元組放回去。白白把畫面弄差、又一點沒省,那是純虧,而在那些本來就壓得不錯的圖片上,這種事發生得比你想的多。
壓不動的那些圖片
PDF 裡有些圖片會被跳過,而好一點的工具會把它們點出來,不會一聲不吭地把它們排除在帳目之外:
- JPEG 2000、JBIG2 和傳真編碼(CCITT)圖片。沒有哪個瀏覽器內建這三種的解碼器,所以原樣放行。後兩種是雙色的,只有黑白,一般也本來就接近最小了。
- CMYK 圖片。故意不動。重編有可能讓印出來的顏色偏掉,而對一份別人要拿去列印的文件做這種事,未免太意外了。
動手壓之前,先試試這幾招
有時候檔案之所以大,理由本身就說明壓縮是個錯誤答案。
它是不是本來不用掃的?一份列印出來又掃回去的文件,就是一疊文字的照片。原件要是還以文件的形式存在某處,把那個轉成 PDF,出來的檔案會小上一大截,而且還能搜。
它是不是按印刷設定匯出的?文書處理和設計軟體常常預設匯出印刷品質。從原始檔按螢幕用途重新匯出一次,通常比壓縮那份匯出結果更划算。
它非得是一個檔案不可嗎?郵件的上限是按每封算的。把一份兩百頁的文件按章拆開,有時候才是老實的辦法。
加密的檔案,以及壓縮工具為什麼該拒收
帶密碼的 PDF 會被這裡的工具拒收,這是故意的,不是缺功能。連密碼是空的那種也拒,而很多掃描器和影印機就是這麼存的。
給文件解保護跟給文件瘦身是兩碼事。一個一聲不吭就辦了的工具,等於替你做了你沒要求的事,動的是別人有意鎖上的檔案,還回給你一份不再具有他們本來想要的那個屬性的副本。你真想解,那就先自己動手、有意識地解掉。
檢查結果
開啟它。把圖片放到全尺寸看看,確認文字還選得中,再核對一遍頁數。
最後這件事,這裡的工具在把檔案交給你之前就替你做了:它把剛寫好的文件重新開啟一遍,把頁數點一遍,在你自己的機器上。它還按 PDF 1.5 寫,2003 年之後出的閱讀器都認,所以「在我機器上打得開」基本可以代表「在他們那裡也打得開」。
為什麼這件事不需要伺服器
壓縮 PDF 聽起來像伺服器的工作,在網頁存在的大半時間裡也確實是。可它實際做的事,無非是解析檔案結構、找到那些影像流、用瀏覽器本來就帶的編解碼器把它們解開再編回去,然後把文件寫出來。這些現在都能在瀏覽器裡跑。
而這件事在這類檔案上比在別的上更要緊,因為人們拿來壓的是什麼:合同、診斷報告、銀行流水、身份證件、報稅材料。這裡的工具壓根沒有聯網功能,頁面的 Content-Security-Policy 把它可能聯的地址全列了出來,沒有一個是本站的。開啟它,拔線,照壓不誤。
把檔案傳給線上轉換器安全嗎?裡還有另外三個同類檢查。