我有一个输入PDF文件(通常,但并不总是由pdfTeX生成),我想将其转换为输出PDF,它在视觉上等效(无论分辨率),它具有相同的元数据(Unicode文本信息) ,超链接,轮廓等),但文件大小尽可能小。
我知道以下方法:
java -cp Multivalent.jar tool.pdf.Compress input.pdf
(来自http://multivalent.sourceforge.net/)。这将重新压缩所有流,删除未使用的对象,统一等效对象,压缩空格,删除默认值,压缩交叉引用表。gs -sDEVICE=pdfwrite
)时,请确保它不会降低图像质量,并且不会增加(!)图像尺寸。我知道以下技巧,但它们不适用于我的情况,因为我已经有了PDF:
您对如何优化PDF有任何其他想法吗?
答案 0 :(得分:10)
优化PDF文件
避免使用Refried Graphics
对于必须作为位图插入的图形,请为最大可压缩性和最小尺寸做好准备。在PDF的输出分辨率下使用最佳质量的图像。将压缩的JPEG插入PDF并提取它们可能会重新压缩JPEG,这会产生明显的瑕疵。使用黑白图像和文本代替彩色图像,以允许使用擅长单色压缩的新JBIG2标准。保存Web的PDF时,请务必关闭缩略图。 使用矢量图形
尽可能将基于矢量的图形用于通常用于GIF的图像。矢量图像完美地缩放,看起来很奇妙,并且它们的数学公式通常比描述每个像素的位图图形占用更少的空间(尽管在某些情况下位图图形实际上小于矢量图形)。您还可以使用ZIP压缩来压缩矢量图像数据,ZIP压缩内置为PDF格式。 Acrobat Reader版本5和6也支持SVG标准。 最小化字体
如何使用字体(尤其是较小的PDF)会对文件大小产生重大影响。最大限度地减少文档中使用的字体数量,以最大限度地减少它们对文件大小的影响。每个额外的完全嵌入字体可以轻松地获取40K的文件大小,这就是为什么大多数作者创建仅包含实际使用的字形的“子集化”字体的原因。 扁平脂肪形式
Acrobat表单会占用PDF中的大量空间。 Acrobat 8 Pro中的新功能可以在高级版中平整表单字段 - > PDF优化工具 - >放弃对象对话框。展平表单使表单字段不可用,表单数据与页面合并。您还可以使用Apago的PDF Enhancer通过删除文件中但从未实际使用过的信息来将表单减少50%。您还可以将refried PDF与旧表单页面组合在Acrobat中创建混合PDF(请参阅下面的“Refried PDF”部分)。
请参阅article
答案 1 :(得分:4)
从PDF规范1.5版开始,有两种新的压缩方法,即对象流和交叉引用流。
您提到Multivalent.jar
压缩工具会压缩交叉引用表。这通常意味着交叉引用表被转换为流然后被压缩。
此交叉引用流的格式不固定。您可以更改三个“列”数据的位大小。还可以使用预测器功能预处理流数据,该预测器功能将提高数据的压缩级别。如果您使用文本编辑器查看PDF内部,您可以在交叉引用流字典中找到/Predictor
条目,以检查您正在使用的工具是否正在利用此功能。
在压缩上使用预测器也可能对图像很方便。
提供的第二种压缩方式是使用对象流。
通常在PDF中,您有许多类似的对象。现在可以将它们组合成单个对象然后进行压缩。 Multivalent Compress工具的文档提到了使用了对象流,但没有关于将哪些对象组合在一起的实际选择的许多细节。如果将类似对象组合到一个对象流中,压缩效果会更好。