8

我有一个输入 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 的想法吗?

4

2 回答 2

9

优化 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”部分)。

文章

于 2009-05-04T07:59:58.623 回答
4

从 PDF 规范版本 1.5 开始,有两种新的压缩方法,对象流和交叉引用流。

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

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

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

提供的第二种压缩方式是使用对象流。

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

于 2009-06-04T06:58:19.537 回答