【问题标题】:Any suggestions for shrinking a PDF file?对缩小 PDF 文件有什么建议吗?
【发布时间】:2010-10-11 09:14:54
【问题描述】:

我们有一个动态构建 pdf 文件的 .net 2.0 网络系统。其中一些文件可能会变得非常大 - 12MB+。虽然处理时间不是一个因素,但在某些情况下,要下载的文件的大小确实是一个因素。

目前,让我们假设我们的 B 级 pdf 库已经在制作它所知道的最小文件。 (不过,如果有人在这方面有任何建议,请参阅this related question。)

但是,将有问题的 12MB 文件通过 Acrobat 蒸馏器发送会产生大约 700K 的文件,而打印质量没有明显损失。

我很想拥有某种后处理器,它甚至可以完成三分之一的工作。有没有人知道会做这样的事情的任何控件?

对于这个项目来说,越便宜越好,但我们并不反对花几块钱。

(一些抢占式 cmets:当然,目前无法使用新工具重写现有的 PDF 生成代码。此外,虽然 Distiller 似乎有一个 API,但在网络服务器上调用它似乎不是最高效的课程 - 而且 Distiller 有点贵。最后,我们最好不要将 pdf 打包成 zip 文件或类似的文件,因为这可能会让客户有些困惑。不,真的。)

谢谢!

【问题讨论】:

  • 您在 PDF 中粘贴了什么?文本?图片?两者都有?
  • 上述很多。据我所知,该库正在尽可能多地压缩所有图像。

标签: .net pdf filesize


【解决方案1】:

大型 PDF 文件有多种原因。通常的嫌疑人是重复的对象,例如图像、不需要/太大的字体以及太大/压缩不良的图像。

您可以尝试使用市场上可用的 PDF 库之一自己实现压缩实用程序。或者您可以尝试 Docotic.Pdf 库来完成这项任务。我为公司工作,所以你不必相信我 :-) 自己尝试一下,看看它是否对你有帮助。我们有Compress PDF documents in C# and VB.NETDocotic.Pdf提供的优化手段的文章。

免责声明:我知道这个问题已经过时了,但希望我的回答对那些仍然可以在 SO 上或通过 Google 找到它的人有所帮助。

【讨论】:

    【解决方案2】:

    如果您对无损压缩感兴趣,请尝试我的工具 Precomp 和您选择的文件压缩器。根据您的 PDF 文件中的内容,Precomp 通常会放大您的 PDF 文件,以便之后可以更好地压缩它。

    【讨论】:

      【解决方案3】:

      使用 Ghostscript,它也可用于 32 位和 64 位 Windows 平台。它可以识别所有 Adobe Distiller 参数[1] 和 honors most of them。最重要的是,您可以将 PostScript 程序注入到转换过程中。我在图像密集型 PDF 的预印制作环境中使用了一年。如果参数设置正确,文件大小可以从 40MB 下降到 800kB,而没有明显的质量损失。我发现它非常快,事实上文档指出it may be faster than Adobe Distiller

      而且它是免费(啤酒和演讲一样)。

      [1] 参见 Distiller 帮助文件夹中的 distparm.pdf 或查看here

      你如何使用它

      您从命令行调用它,并使用您想要的所有参数、输入和输出文件,然后就完成了。

      快速示例:

      gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite\
         -dCompatibilityLevel=1.3 -dEncodeColorImages=true\
         -sOutputFile=output.pdf input.pdf
      

      一些有价值的资源:

      【讨论】:

      • 我们在我工作的地方也使用它,我们使用 Bullzip 作为虚拟打印机(它反过来使用 ghostscript)来打印我们所有的文档(它们是自定义的 .Net PrintDocument 对象)。
      【解决方案4】:

      如果您的 pdf 库正在制作次优 PDF,那么在任何其他库中加载和保存 PDF 应该会为您提供更小的文件。 PDFNet SDK Type 3 应该可以胜任这项任务,360 美元比 Adob​​e PDF 库便宜。

      【讨论】:

      • xpdf 不支持写入 PDF 文件,因此不能用于缩小 PDF 文件。
      • @Dwight Kelly - 我没有意识到这个限制 - 已经更正了我的答案。
      【解决方案5】:

      Apago 有很多“整理”PDF 的工具

      http://www.apagoinc.com/

      【讨论】:

        【解决方案6】:

        不要在 PDF 中包含整个字体。照顾好那个可以节省几兆字节。

        【讨论】:

          【解决方案7】:

          除了使用其他库之外,最好的办法是让您的库正常工作。关于您的其他帖子的一些建议 - 我不确定您要运行任何“后期处理”来压缩文件。

          顺便说一句,您的网络服务器是否允许 HTTP gzipped 内容?对最终用户透明!

          (话虽这么说,短 PDF 文件应该不受大多数​​压缩方法的影响 - 图像应该在渲染过程中被压缩(在这种情况下是 JPEG >> ZIP) - 但如果你有一个 lot文本,gzip 可以提供帮助)

          【讨论】:

            【解决方案8】:

            有多种风格的 PDF 具有不同大小的功能权衡。如果您要转换基于文本的文档(word/excel/etc)与图像文档(TIFF/JPG/BMP/etc),那么它可能会解释 distiller 为您提供的较小文件大小。您需要确保您的实用程序不仅仅是从所有内容中创建仅图像 PDF 文件(通常更大)。压缩格式也非常重要,特别是对于彩色文档。寻找允许您调整这些设置的配置选项。如果您提及特定的 PDF 生成器工具,我们可能会在这方面为您提供更具体的帮助。

            这里有一个不错的reference关于 PDF 文件的“风味”:

            【讨论】:

              【解决方案9】:

              PDF 通常使用 JBIG/JBIG2/JPEG2000 压缩。 Cvision 的PDFCompressor 是压缩PDF 的最佳选择。

              【讨论】:

                【解决方案10】:

                我对你的问题没有具体的答案,所以我希望我的回答不是糟糕的形式。

                我已将pdftk 用于各种与 PDF 相关的任务。它很容易从外壳中使用,我看到它确实具有压缩功能。您可以快速尝试一下,看看它是否适用于您的应用程序的后期处理。

                【讨论】:

                • 来自关于compress | uncompress 的pdftk 手册:这些仅在您想在vim 或emacs 等文本编辑器中编辑PDF 页面代码时有用。通过应用解压缩过滤器删除 PDF 页面流压缩。使用 compress 过滤器恢复页面流压缩。
                【解决方案11】:

                向您的 pdf 库的制造商提交错误?如果它是开源的,修复几个低悬的果实(可能有很多)并提交补丁?

                【讨论】:

                • 主啊,我希望它是开源的。这是我现在要研究的许多问题之一。对于它的价值,我不认为这是一个错误,而是 - 关于什么是重要功能的不同意见。 (另外,文档很少。)
                • 我有一个想法——你能在你的网络服务器上启用 mod_gzip 或 mod_deflate 来提供 pdf 文件吗?标题看起来像: Content-Type: blah blah pdf Content-Encoding: gzip
                • 正确构建的 PDF 文件的大部分内容都已压缩,因此另一层压缩不太可能有太大帮助。加载图像的文件将得到最少的帮助。
                • 没错,但在问题中他暗示压缩 pdf 可能会以牺牲困惑为代价来获得大小优势。
                猜你喜欢
                • 2010-09-25
                • 2014-09-11
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多