【问题标题】:Ways to Optimize Ghostscript?优化 Ghostscript 的方法?
【发布时间】:2012-05-07 14:28:47
【问题描述】:

我在 linux 服务器上使用 ghostscript 来合并 PDF。我正在使用最新版本,9.05。我通常必须合并 5 个或更多 PDF。目前,合并 3 个 PDF 大约需要 20 秒……这对我来说似乎真的很慢。这是我正在使用的线路:

gs -dBATCH -dNOPAUSE -dNOGC -q -sDEVICE=pdfwrite -sOutputFile=output.pdf -c 3000000 setvmthreshold -f a.pdf b.pdf c.pdf

有什么建议吗?

【问题讨论】:

  • 3 个 PDF 的字节数和页数有多大?每个 PDF 使用多少种字体? (使用pdffonts a.pdfpdffonts b.pdf...)output.pdf 的相应事实是什么?你知道-dNOGC应该有什么效果吗?有用吗?
  • @pipitas 好点。关闭 GC 可能会导致更多交换。此外,需要在 -c 选项的参数周围加上引号。没有 -f 选项。

标签: linux pdf pdf-generation ghostscript


【解决方案1】:

Ghostscript 将每个 PDF 文件完全解释为标记操作,然后根据组合内容构建一个新文件。显然,这比简单地复制内容流要慢得多。这就是为什么你在做的事情看起来很慢。

如上所述,使用仅复制内容流和对象的工具,并根据需要重新编号,这样会快得多。除了pdfjam(我对此一无所知),您还可以查看pdftk。肯定还有其他人。

【讨论】:

    【解决方案2】:

    如果您只需要连接一些 pdf,您可以查看 pdfjam。我从来没有发现它在连接过程中很慢,但它有时会产生打印相当慢的输出 pdf。

    link

    【讨论】:

      【解决方案3】:

      使用pdfconcat,它会在瞬间完成。 Ghostscript 做任何事情都很慢。

      【讨论】:

      • 这句话没有抓住重点。 Ghostscript 所做的比pdfjam 所做的要多得多。 pdfjam 只做一件事,但做得很快。 (注意,我不是说 '...但是做得很好。'* 为什么我没有这么说是因为“好”在不同情况下的定义可能不同:另请参阅此处的 [更新] 答案stackoverflow.com/a/4233975/359307。这就是我向上面的@Matt Orlando 提问的原因。)
      • GhostScript 不会合并 PDF,它会将它们分开并重新创建一个全新的 PDF,并完成了许多其他事情,包括重新压缩所有图像,而 OP 可能不希望它这样做。正如您所说,有很多方法可以将 PDF 文件组合在一起,有些比其他更好,但 Ghostscript 不是最好的解决方案。无论如何,我说的是pdfconcat 而不是pdfjam。就我个人而言,我自己会为此编写应用程序,因为我认为没有任何真正好的解决方案可用。
      • 我非常了解 Ghostscript 的工作原理以及它的强项(以及弱点)是什么。 :-) -- 根据您希望输出 PDF 的准确程度,Ghostscript 可能 是最佳解决方案。如果完成结果的速度是唯一的问题,那么由于 KenS(他是 Ghostscript 开发人员)和您(显然确实阅读了 KenS 的评论)概述的原因,Ghostscript 肯定不是最好的。 ..(我所说的关于pdfjam 的内容也适用于pdfconcat。)您的回答是片面的,而 user1277476 的回答确实符合其建议。
      • 很抱歉我的回答没有达到您的预期。
      【解决方案4】:

      在追踪导致超时的原因后,我注意到 Ghostscript 在处理 pdf v1.4(acrobat 5 兼容性)文件时比 v1.7 快得多。当 Ghostscript 稍后使用文件时,只需将 PDF 文件保存为 v1.4 即可加快速度。

      这可能不适用于所有情况。根据速度,可能值得使用 Ghostscript 将 pdf 转换为比其他操作更低的版本。仅通过更改 pdf 版本,我就看到了从 30 多秒到约 1 秒的时差。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-26
        • 1970-01-01
        • 1970-01-01
        • 2021-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多