PDF壓縮
目前在國內,用于產(chǎn)生PDF文件的幾個(gè)主要工具有Adobe的 Acrobat Distiller、PDF開(kāi)源庫、以及一些能夠產(chǎn)生PDF結果虛擬打印機工具。這些工具在產(chǎn)生PDF文件的過(guò)程中,或多或少都會(huì )有一些小的問(wèn)題。Acrobat Distiller在制作PDF文件時(shí),對于黑白圖像沒(méi)有使用壓縮率更高的JBIG2編碼,而是使用了CCITTFax編碼;使用開(kāi)源庫制作PDF文件時(shí),有時(shí)會(huì )在文件內產(chǎn)生很多無(wú)用對象。當一個(gè)文件反復修改后,在生成PDF時(shí),其中的垃圾對象(從未被引用的對象)占到文件尺寸的三分之一。
眾所周知,較大的文件不僅占用更多的存貯資源,也要花費更多的時(shí)間去下載。對于那些以PDF為電子書(shū)格式提供數據服務(wù)的企業(yè),對現有的PDF文件進(jìn)行壓縮處理,不僅能節省存貯空間,也能加密數據發(fā)布的速度,更重要的是這些能提高企業(yè)服務(wù)的質(zhì)量。
壓縮示意圖和策略
- 對于未采用JBIG2壓縮的黑白圖像,全部使用JBIG2編碼壓縮;可以使用無(wú)損壓縮,也可以使用有損壓縮(有損壓縮有四個(gè)級別可供選擇)。當采用無(wú)損壓縮時(shí),PDF文件將保持與原始文件相同的顯示質(zhì)量。
- 對于使用JPEG編碼的彩色圖像或灰度圖像,全部轉換為JPEG2000編碼,可以極大的減小文件的尺寸,有多上壓縮質(zhì)量級別可供選擇。
- 對于用LZW編碼壓縮的內容,替換為用Flate壓縮。早期的PDF文件中對LZW編碼采用較多。
- 去除從未被引用的對象,
- 遵照PDF規范,以更節約空間的形式組織文件內容。
- 合并對象。遵照PDF規范,將一些小的對象合并,以節約空間。
- 對于未被編碼的且長(cháng)度大于100的流,使用Flate編碼;
- 壓縮交叉引用表和文檔結構。對于頁(yè)數較多的PDF文件,在描述其文檔結構時(shí),會(huì )占用很多的空間,特別是對于大部分內容為文字的文件,其壓縮效率非??捎^(guān)。最典型的例子是Adobe的PDF格式說(shuō)明書(shū),壓縮后的尺寸為8.276兆,如果不采用壓縮交叉引用表和文檔結構,則尺寸為17兆多。采用這種方式壓縮的文件需要用Acorbat Reader6.0以后版本才能打開(kāi)。
對于包含黑白圖像的PDF文件,在壓縮后能減少接近4分之一的空間。有些文件甚至可以達到二分之一。對于以彩色或灰度圖像為主的PDF文件,壓縮后的尺寸可以減小到壓縮前的五分之一或更多。
示例文件
- [原始文件]
- [無(wú)損壓縮結果]
- [有損壓縮結果]