【问题标题】:Prawn PDF Compression, compress content streams, what does it do大虾PDF压缩,压缩内容流,它是做什么的
【发布时间】:2016-09-15 21:13:54
【问题描述】:

prawn gem 有一个初始化选项:compress,描述为here

显然是"Compresses content streams before rendering them"

无论有没有compress: true,我都生成了两次相同的 14 页 pdf。每页有 2 张照片和各种文字。生成的文件大小完全相同。

所以我的问题是:在制作大量照片时,我会发现文件大小有所不同吗?或者compress: true 在处理过程中会吃掉更多或更少的 RAM?它的目的是什么?

【问题讨论】:

  • 你监控内存使用了吗?这对于非常大的文档可能很有用,在这些文档中以 CPU 使用率换取更轻的内存占用是值得的。
  • 你可能有更好的运气直接在他们的谷歌群组上提问:groups.google.com/forum/#!forum/prawn-ruby
  • @Tass 感谢谷歌小组发布了herehere 的答案,我现在根据这些答案同时运行compress: trueoptimize_objects: true,并且没有看到生产中的CPU 使用率增加
  • 这是个好消息,@BigRon!当我查找有关 gem 的信息时,我首先会访问他们的 github 存储库。您通常会在那里找到很好的文档,以及为更复杂的场景找到答案的地方。 (一个 wiki,有时是一个 google 组。)在这种情况下,提到一个 google 组。

标签: ruby-on-rails ruby pdf prawn


【解决方案1】:

我终于找到了三个问题的完整答案

1.在包含大量照片的制作中,我会发现文件大小有所不同吗?

2。或者compress: true 在处理过程中消耗更多或更少的 RAM?

  • 有趣的是,对于小型 (compress: true 相关的额外 RAM 消耗可以忽略不计或不存在。对于较大的文件,您的结果可能会有所不同。

3.它 (:compress) 的目的是什么?

【讨论】:

    【解决方案2】:

    一种更有效的压缩 PDF 的方法是使用 Ghostscript 进行后处理,使用如下命令:

    ghostscript -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dUseCIEColor -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=<output.pdf> <input.pdf>
    

    这通常会将我的 Prawn 生成的 PDF 的大小减少 50% 或更多。 dPDFSETTINGS 选项可以设置为不同的值以更改压缩量 - 请参阅 Ghostscript 文档。

    【讨论】:

    • 你能告诉我如何在 ruby​​ 中使用 ghostscripts 吗?我看到了几个像 gs-ruby 和 rghost 这样的 gem,但没有一个有完整的详细示例来说明如何使上面的脚本在 ruby​​ 中工作。你能帮我解决这个问题吗?
    • 抱歉,我只是使用命令行(通过将语句括在反引号中)而不是使用 gem。
    • 如果有人还在寻找这个,我已经设法从 ruby​​ 脚本中调用它。 out, err, status = Open3.capture3("ps2pdf14 -", :stdin_data=>pdf.output, :binmode=>true) 结果是
    猜你喜欢
    • 2012-03-20
    • 1970-01-01
    • 2021-01-19
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多