所有的PDF文件都被压缩了吗?

所有的PDF文件都被压缩了吗?,pdf,compression,gzip,Pdf,Compression,Gzip,所以这里有一些关于PDF压缩的线程说,压缩PDF有一些好处,但不是很多,因为PDF已经被压缩了 我的问题是:这是否适用于所有PDF格式,包括旧版本的格式 此外,我相信有人(可能是白痴)可能会将位图放入PDF而不是JPEG等格式。我们公司的DBs中有很多PDF格式(可能是一些较旧的格式)。我们正在考虑在传输过程中使用gzip进行压缩,但不知道这是否值得麻烦PDF通常对其包含的对象使用内部压缩。但根据文件格式规范,这种压缩并不是强制性的。所有(或某些)对象可能看起来完全未压缩,并且它们仍然可以生成有

所以这里有一些关于PDF压缩的线程说,压缩PDF有一些好处,但不是很多,因为PDF已经被压缩了

我的问题是:这是否适用于所有PDF格式,包括旧版本的格式

此外,我相信有人(可能是白痴)可能会将位图放入PDF而不是JPEG等格式。我们公司的DBs中有很多PDF格式(可能是一些较旧的格式)。我们正在考虑在传输过程中使用gzip进行压缩,但不知道这是否值得麻烦

PDF通常对其包含的对象使用内部压缩。但根据文件格式规范,这种压缩并不是强制性的。所有(或某些)对象可能看起来完全未压缩,并且它们仍然可以生成有效的PDF

有一些命令行工具能够解压大部分(如果不是全部的话)内部对象流(甚至是最新版本的PDF)——并且新的未压缩版本的文件将在屏幕或纸张上呈现完全相同的效果(如果打印)

所以要回答您的问题:不,您不能假设gzip压缩只会增加麻烦而没有好处。您必须使用具有代表性的文件样本集进行测试。只需将其gzip,并记下所用的时间和节省的空间


这还取决于所使用的PDF生成软件的类型…

使用PDF实用程序对格式中的内容进行压缩,并删除不需要的嵌入字体等内容,而不是应用gzip压缩,将获得更好的收益。这样的实用程序可以减少图像采样并应用适当的图像压缩,这将比gzip有效得多。JBIG2可以应用于两层图像,并且非常有效,JPEG可以应用于自然图像,其质量级别可根据您的需要进行选择。在AcrobatPro中,您可以使用Advanced->PDF Optimizer查看空间的使用位置,并有选择地攻击这些用户。还有一个通用文档->减少文件大小以自动应用这些减少

更新:

Ika的答案中有一个链接,指向可以从Java使用的PDF优化实用程序。你可以看看他们的。该代码正好列出了我提到的内容:

  • 删除重复的字体、图像、ICC配置文件和任何其他数据流
  • 可以选择将高质量或可打印的PDF文件转换为小型、高效且可用于web的PDF文件
  • 可以选择将大图像的采样降低到给定的分辨率
  • 可选择使用JBIG2和JPEG2000压缩格式压缩或重新压缩PDF图像
  • 压缩未压缩的流并删除未使用的PDF对象

我不熟悉PDF实用程序。是否有一个JAVA API用于此,因为无论我们使用什么解决方案,它都必须有一个API,以便我们能够在服务器上自动化此过程?我知道ApachePDFBox,但不确定它对已经构建的PDF的压缩有多好,因为我想了解PDF中JPEG2000的使用问题。此选项不常用。在某些设备上是否存在任何渲染问题PDF 1.5(包括JPEG2000)于2003年4月推出。只要你的读者至少支持PDF 1.5,它就能工作。但是文本内容是压缩的吗?那么嵌入式字体呢?@Stewart:嵌入式字体通常是压缩的(因为默认情况下字体文件本身也是压缩的)。另请参见对“[如何从PDF中提取嵌入字体作为有效字体文件?]()”的回答。文本内容通常与其他内容一样被嵌入,可能被压缩,也可能不被压缩,正如答案所描述的…@KurtPfeifle你是说PDF中的文本部分是“对象”,就像图像这样吗?对于那些不熟悉这种格式在幕后的工作方式的人来说,这并不清楚。@Steward:是的。:-)