PDF 压缩 Adob​​e 是如何做到的?

Posted

技术标签:

【中文标题】PDF 压缩 Adob​​e 是如何做到的?【英文标题】:PDF compression How does Adobe do it? 【发布时间】:2009-11-11 22:16:20 【问题描述】:

这是一个比严肃的问题更有趣的问题,但 Adob​​e PDF 格式如何使文档如此...便携?

我刚刚创建了一个大小为 235kb 的小型 Word 文档,其中包含多张彩色照片和一些文字短语。使用 CutePDF 创建的 PDF(我知道这不是最有效的 PDF 创建方法)只有 176kb。这是 25% 的压缩比。将这些文件放入压缩文件夹时,PDF 能够压缩 3%,而 .docx 只能压缩 2%。我敢肯定,更大的文件在大小上会有更大的差异。

我的问题是,Adobe 如何设法使他们的文件变得如此之小?我知道它们是从光栅图形中绘制的,但是我的 3 个位图文件真的不能从光栅中得到那么多帮助,不是吗?

【问题讨论】:

adobe.com/devnet/pdf/pdf_reference.html 【参考方案1】:

如果您有 Acrobat 9,则内置了一个不错的工具,因此您可以查看 PDF 是如何组合在一起的(以及使用的压缩)。 http://pdf.jpedal.org/java-pdf-blog/bid/10479/Viewing-PDF-objects有一篇博文解释如何使用它

【讨论】:

我认为 Acrobat Reader 中没有。今天晚些时候我会偷偷溜到营销人员的电脑前看看这个……谢谢! 很遗憾,该链接似乎不再有效。【参考方案2】:

有几种方法可以压缩这个:

    Pdf 文件使用 lzw 和 zip 压缩。

    如果图像在文档中被缩放,或者磁盘上的 dpi 比在 cutpdf 中允许的更大(例如,如果 cutpdf 设置为 300dpi 并且图像为 600 dpi),则可以缩放在pdf中。

    Microsoft 在 xml 中以 docx 格式存储大量信息。仅导出信息所需的方式远不止于此(例如,尝试将文本复制并粘贴到文本框单元格中,然后查看出现的 html 信息 - 我对 cms 的文本框大小有限制,并且一个 7 个单词的句子膨胀到 950 个字符)。这样可以稍后对其进行编辑,并使用大量深奥的信息来确保所有内容都以每种可能的排列方式正确显示。 pdf 不需要这些信息,因此它可以只处理字体和大小,并删除所有不必要的信息,从而节省大量空间。

【讨论】:

【参考方案3】:

当您使用如此小的文件时,文档格式中的任何开销都会产生不成比例的影响,这就是为什么您会看到如此大的 % 差异。

我提取了一个 2683KB 的 JPEG 文件并将其插入到一个新的 word 2003 文档中。生成的 .doc 文件为 2725KB(或 2697KB 作为 docx)。把它变成 PDF 给我一个 2701KB 的 PDF。所以我看到了 25KB 的差异,但由于图像数据的大小,差异只有 1% 左右。它大约是你得到的一半,但也许你在制作 docx 时所拥有的单词版本更冗长?

对于 PDF,acrobat 将空间使用情况显示为 2691K ​​图像、8.27K 开销和 1K 字体。 PDF 在语法上是一种非常稀疏的格式,它限制了开销,而且其中大部分都有重复的字符串,因此很容易压缩。

如果您想以树状视图查看 PDF 包含的内容,可以下载CosEdit 的演示版。

【讨论】:

以上是关于PDF 压缩 Adob​​e 是如何做到的?的主要内容,如果未能解决你的问题,请参考以下文章

如何在保存 PDF 表单时阻止 Adob​​e Reader 询问“另存为”(即只允许“保存”)?

如何在我的 iPhone 应用程序中快速查看 Adob​​e acrobat 中的 pdf [重复]

如何以编程方式知道 Adob​​e Reader 已完成文件加载?

如何从 deepfont 论文中提到的 Adob​​e VFR 数据集中的 bcf 文件加载图像数据?

从 HTML 创建 PDF 文件并将其发送给用户以供签名

从 Adob​​e Reader 的 ActiveX 控件获取 PDF 文档的页码