【问题标题】:PDF file compressionPDF文件压缩
【发布时间】:2010-12-19 10:57:04
【问题描述】:

我有一个动态生成和压缩大批量PDF文件的需求。

我正在考虑常用的算法

  • 邮编
  • 王牌
  • rar

欢迎提出其他建议。

我的问题是哪种算法可能会给我最小的文件大小。速度和效率也是重要因素,但规模是我最关心的问题。

每个存档中是否有很多小文件或更少的大文件也会有所不同。

我的大部分处理将在 PHP 中完成,但如果需要,我很乐意与第三方可执行文件交互。

编辑:

这些文件主要是发票,不应包含除公司徽标以外的任何其他图像

【问题讨论】:

  • 这在很大程度上取决于文档中是否有图像,以及这些图像的格式。您可能需要在其中添加一些信息。
  • 但是PDF已经被压缩了,不是吗? en.wikipedia.org/wiki/Portable_Document_Format
  • @Pekka 谢谢,进行了编辑。 @Pierre 是的,PDF 已经被压缩,但我认为可以进一步压缩,而且每个存档都将包含多个 PDF,因此可能存在差异。
  • 查看我的答案以获得“已压缩”问题的良好解决方案。
  • 使用“非标准”压缩格式会不会有问题,即。收件人必须有一个允许他们解压缩文件的程序。如果文件被发送给没有管理员访问权限的人或不愿安装未知软件的人,那么您可能会遇到问题。因此 zip 可能是最好的,因为它可以在没有任何软件的情况下在 windows 中解压缩。显然,这一切都取决于您将文件发送给谁

标签: php pdf compression archive


【解决方案1】:

将我的漂亮工具 Precomp 与 7-Zip 结合使用。它解压缩 PDF 中的 zLib 流,因此 7-Zip(或任何其他压缩器)可以更好地处理它们。您将获得大约 50% 的原始大小的文件无损。此工具特别适用于 PDF 文件,但也适用于其他压缩 (zLib/LZW) 流,如 ZIP/GZip/JAR/GIF/PNG...

有关结果示例,请查看 herehere。预压缩 (PDF->PCF) 部分的速度可能很慢,但重新压缩/重建 (PCF->PDF) 部分的速度会非常快。

要获得比 Precomp + 7-Zip 更好的结果,您可以尝试 lprepaq 和 prepaq 变体,但要注意,尤其是 prepaq 速度较慢 :) - 好的一面是 prepaq 提供了目前可用的最佳 (PDF) 压缩。

【讨论】:

  • 谢谢,我会调查的。不过可能不得不说服老板使用未知的工具。
  • 当前版本仍然是测试版,但运行良好。为了安全起见,您可以确保重建的 PDF 具有相同的 md5sum 或在其他地方进行比较。
  • 好主意,我们正在使用 MD5 来验证导入的完整性,因此存储生成文件的哈希不是问题。
  • 有趣-为了让它变小而让它变大!
【解决方案2】:

我在压缩 PDF 方面没有取得多大成功。正如所指出的,它们在组合时已经被压缩(尽管一些 PDF 组合工具允许您指定“压缩级别”)。如果可能的话,您应该采取的第一种方法是减小组合 PDF 的大小。

如果您将 PDF 保存在单个文件中,它们可以共享任何公共资源(图像、字体),因此可以显着减小。请注意,这意味着一个大型 PDF 文件,而不是一个包含多个 PDF 的大型 ZIP。

根据我的经验,在 PDF 中压缩图像非常困难,而且图像对文件大小的影响最大。确保在开始之前已优化图像。甚至值得在没有图像的情况下运行测试运行,以查看图像的大小。

另一个组件是字体,如果您使用多个嵌入字体,那么您会将更多数据打包到文件中。只需使用一种字体来缩小尺寸,或者使用常用的字体,这样您就不需要嵌入它们。

【讨论】:

    【解决方案3】:

    过去,我们已经为存储大量文本的大型(和许多)PDF 执行此操作 - 澳大利亚培训组织的培训包。它大约有 96% 的文本(课程信息等)和一些小图表。大小从 1-2Mb 到 8 或 9Mb 不等,它们的体积通常为 4 或更多。

    我们发现使用 Zip OK 进行压缩可以获得良好的压缩效果,因为 PDF 格式已经被高度压缩,我们的用户可以更方便地批量下载所有文件,而不用担心文件大小。给你一个想法,一个 2.31Mb 的文件 - 大量文本,几个整页图表 - 在 ZIP 中压缩为 1.92Mb,在 RAR 中压缩为 1.90Mb。

    我建议使用 LZMA 以获得最佳效果 - 也可以查看压缩和解压缩的资源使用情况。

    这些文件有多大?获取 WinRAR、WinAce 和 7Zip 的副本并在之前提供。

    【讨论】:

    • 感谢您提供详尽的信息。我目前正在使用不同的算法来查看哪一种可以提供良好的利率。在 LZMA 中运行的 7z 似乎是迄今为止最好的
    【解决方案4】:

    我怀疑通过压缩 PDF 会大大/减少文件大小。但是,如果您所做的只是将多个文件收集到一个文件中,为什么不tar 呢?

    【讨论】:

      【解决方案5】:

      如果您需要最小的文件大小,LZMA 是最好的。

      当然 PDF 也可以自己压缩。

      【讨论】:

      • 谢谢,看来新的 7z 版本实际上使用 LZMA
      【解决方案6】:

      我认为 7z 是目前最好的,RAR 次之,但我建议你尝试两者,找出最适合你的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-29
        • 2017-01-02
        • 2013-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-19
        • 1970-01-01
        相关资源
        最近更新 更多