PDF压缩
目前在国内,用于产生PDF文件的几个主要工具有Adobe的 Acrobat Distiller、PDF开源库、以及一些能够产生PDF结果虚拟打印机工具。这些工具在产生PDF文件的过程中,或多或少都会有一些小的问题。Acrobat Distiller在制作PDF文件时,对于黑白图像没有使用压缩率更高的JBIG2编码,而是使用了CCITTFax编码;使用开源库制作PDF文件时,有时会在文件内产生很多无用对象。当一个文件反复修改后,在生成PDF时,其中的垃圾对象(从未被引用的对象)占到文件尺寸的三分之一。
众所周知,较大的文件不仅占用更多的存贮资源,也要花费更多的时间去下载。对于那些以PDF为电子书格式提供数据服务的企业,对现有的PDF文件进行压缩处理,不仅能节省存贮空间,也能加密数据发布的速度,更重要的是这些能提高企业服务的质量。
压缩示意图和策略
- 对于未采用JBIG2压缩的黑白图像,全部使用JBIG2编码压缩;可以使用无损压缩,也可以使用有损压缩(有损压缩有四个级别可供选择)。当采用无损压缩时,PDF文件将保持与原始文件相同的显示质量。
- 对于使用JPEG编码的彩色图像或灰度图像,全部转换为JPEG2000编码,可以极大的减小文件的尺寸,有多上压缩质量级别可供选择。
- 对于用LZW编码压缩的内容,替换为用Flate压缩。早期的PDF文件中对LZW编码采用较多。
- 去除从未被引用的对象,
- 遵照PDF规范,以更节约空间的形式组织文件内容。
- 合并对象。遵照PDF规范,将一些小的对象合并,以节约空间。
- 对于未被编码的且长度大于100的流,使用Flate编码;
- 压缩交叉引用表和文档结构。对于页数较多的PDF文件,在描述其文档结构时,会占用很多的空间,特别是对于大部分内容为文字的文件,其压缩效率非常可观。最典型的例子是Adobe的PDF格式说明书,压缩后的尺寸为8.276兆,如果不采用压缩交叉引用表和文档结构,则尺寸为17兆多。采用这种方式压缩的文件需要用Acorbat Reader6.0以后版本才能打开。
对于包含黑白图像的PDF文件,在压缩后能减少接近4分之一的空间。有些文件甚至可以达到二分之一。对于以彩色或灰度图像为主的PDF文件,压缩后的尺寸可以减小到压缩前的五分之一或更多。
示例文件