Optimization 如何优化PDF文件大小?

Optimization 如何优化PDF文件大小?,optimization,pdf,size,Optimization,Pdf,Size,我有一个输入PDF文件(通常,但并不总是由pdfTeX生成),我想将其转换为输出PDF,它在视觉上是等效的(无论分辨率如何),它具有相同的元数据(Unicode文本信息、超链接、大纲等),但文件大小尽可能小 我知道以下方法: java-cp Multivalent.jar tool.pdf.Compress input.pdf(来自)。这将重新压缩所有流、删除未使用的对象、统一等效对象、压缩空白、删除默认值、压缩交叉引用表 使用jbig2和PNGOUT重新压缩合适的图像 将Type1字体重新编

我有一个输入PDF文件(通常,但并不总是由pdfTeX生成),我想将其转换为输出PDF,它在视觉上是等效的(无论分辨率如何),它具有相同的元数据(Unicode文本信息、超链接、大纲等),但文件大小尽可能小

我知道以下方法:

  • java-cp Multivalent.jar tool.pdf.Compress input.pdf
    (来自)。这将重新压缩所有流、删除未使用的对象、统一等效对象、压缩空白、删除默认值、压缩交叉引用表
  • 使用jbig2和PNGOUT重新压缩合适的图像
  • 将Type1字体重新编码为CFF字体
  • 统一等效图像
  • 将同一字体的子集统一为更大的子集
  • 删除可填充表格
  • 提取或以其他方式转换时(例如,gs-sDEVICE=pdfwrite),确保不会降低图像质量,也不会增加图像大小(!)
我知道以下技术,但它们不适用于我的情况,因为我已经有了PDF:

  • 使用更小和/或更少的字体
  • 使用矢量图像代替位图图像
你对如何优化PDF还有其他想法吗?

优化PDF文件

避免重新绘制图形

对于必须作为位图插入的图形,请为其准备最大可压缩性和最小尺寸。在PDF的输出分辨率下,尽可能使用最佳质量的图像。将压缩的JPEG插入PDF并提取它们可能会重新压缩JPEG,这会产生明显的伪影。使用黑白图像和文本而不是彩色图像,以允许使用在单色压缩方面表现优异的较新JBIG2标准。在为Web保存PDF时,请确保关闭缩略图。 使用矢量图形

对于通常会制作成GIF的图像,尽可能使用基于矢量的图形。矢量图像可以完美缩放,看起来很棒,它们的数学公式通常比描述每个像素的位图图形占用更少的空间(尽管有些情况下位图图形实际上比矢量图形小)。您还可以使用内置于PDF格式的ZIP压缩来压缩矢量图像数据。Acrobat Reader版本5和6也支持SVG标准。 最小化字体

如何使用字体,尤其是在较小的PDF中,会对文件大小产生重大影响。尽量减少文档中使用的字体数量,以尽量减少它们对文件大小的影响。每增加一个完全嵌入的字体都可以轻松地占用40K的文件大小,这就是为什么大多数作者创建的“子集”字体只包含实际使用的字形。 压扁脂肪

Acrobat表单可能会占用PDF中的大量空间。Acrobat 8 Pro中的新增功能是,您可以在“高级->PDF优化器->放弃对象”对话框中展平表单字段。展平表单会使表单字段不可用,表单数据会与页面合并。您还可以使用Apago的PDF Enhancer,通过删除文件中存在但从未实际使用过的信息,将表单减少50%。您还可以将重新生成的PDF与旧表单页面组合,在Acrobat中创建混合PDF(请参见下面的“重新生成的PDF”部分)


请参见PDF规范1.5版中的两种新的压缩方法,对象流和交叉引用流

您提到,
Multivalent.jar
compress工具压缩交叉引用表。这通常意味着交叉引用表被转换成流,然后被压缩

此交叉引用流的格式不是固定的。您可以更改三列数据的位大小。还可以使用预测器函数预处理流数据,这将提高数据的压缩级别。如果使用文本编辑器查看PDF内部,您可能会在交叉引用流字典中找到
/Predictor
条目,以检查您使用的工具是否利用了此功能

在压缩过程中使用预测器可能对图像也很方便

提供的第二种压缩类型是使用对象流


在PDF中,通常有许多类似的对象。现在可以将这些对象组合成单个对象,然后进行压缩。Multivalent Compress工具的文档提到使用了对象流,但没有关于将哪些对象组合在一起的实际选择的很多细节。如果将相似的对象组合到一个对象流中,压缩效果会更好。

+1投票。谢谢你的链接和摘录。虽然它没有帮助我将pdf变得更小(它提到的所有技术都在使用中或不适用于我的案例),但它提供了一个很好的视角。当前的multivalent:现在缺少tool.pdf.Compress类。此处对此进行了描述:。您知道有什么好的替换工具吗?Arch Linux中存在较旧的多价版本: