代码之家  ›  专栏  ›  技术社区  ›  pts

如何优化pdf文件大小?

  •  7
  • pts  · 技术社区  · 15 年前

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

    我知道以下方法:

    • java -cp Multivalent.jar tool.pdf.Compress input.pdf (从 http://multivalent.sourceforge.net/ )这将重新压缩所有流,删除未使用的对象,统一等效对象,压缩空白,删除默认值,压缩交叉引用表。
    • 用jbig2和pngout重新压缩合适的图像。
    • 将Type1字体重新编码为CFF字体。
    • 统一等效图像。
    • 将相同字体的子集统一到更大的子集。
    • 移除可填充表单。
    • 蒸馏或以其他方式转化时(例如 gs -sDEVICE=pdfwrite ),确保它不会降低图像质量,也不会增加(!)图像大小。

    我知道以下技巧,但它们不适用于我的情况,因为我已经有一个pdf:

    • 使用更小和/或更少的字体。
    • 使用矢量图像代替位图图像。

    你还有什么其他优化pdf的想法吗?

    2 回复  |  直到 15 年前
        1
  •  10
  •   Sadegh    15 年前

    优化PDF文件

    避免重新绘制图形

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

    在可能的情况下,对通常会被制作成gif的图像使用基于矢量的图形。矢量图像可以完美地缩放,看起来很神奇,它们的数学公式通常比描述每个像素的位图图形占用更少的空间(尽管有些情况下位图图形实际上比矢量图形小)。您还可以使用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

        2
  •  4
  •   Kevin Newman    15 年前

    pdf规范版本1.5中有两种新的压缩方法:对象流和交叉引用流。

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

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

    在压缩上使用预测器可能对图像也很方便。

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

    通常在pdf中有许多类似的对象。现在可以将它们组合成单个对象,然后进行压缩。多价压缩工具的文档提到使用了对象流,但是没有太多关于要组合在一起的对象的实际选择的详细信息。如果将相似的对象组合到一个对象流中,则压缩效果会更好。