2016-09-15 67 views
1

对虾宝石有一个初始化选项:compress,被描述here虾PDF压缩,压缩的内容流,它有什么作用

显然,这"Compresses content streams before rendering them"

带和不带compress: true我产生相同的14页PDF格式的两倍。每页有2张照片和各种文字。生成的文件大小完全相同。

所以我的问题是:在生产中具有较大数量的照片将我看到的文件大小有区别吗?或者也许compress: true在处理过程中吃更多或更少的RAM?它的目的是什么?

+0

您是否监视过内存使用情况?这对于非常大的文档非常有用,因为轻量级内存占用CPU使用量是值得的。 – tadman

+1

你可能有更好的运气,直接询问他们的谷歌组:https://groups.google.com/forum/#!forum/prawn-ruby – Tass

+0

@Tass感谢,谷歌小组的答案贴[这里](HTTPS:/ /groups.google.com/forum/#!searchin/prawn-ruby/compression|sort:relevance/prawn-ruby/_JK372mdEPs/lZAkgVDDJLEJ)和[这里](https://groups.google.com/forum/#! searchin/prawn-ruby/compression | sort:relevance/prawn-ruby/RoEHWLgQNtI/IZLnm4Cfh_sJ),我现在对这些答案同时运行'compress:true'和'optimize_objects:true',并且在生产中没有看到CPU使用率增加 – BigRon

回答

0

我终于找到了答案全对三个问题

1.在生产中具有较大数量的照片,我会看到文件大小有区别吗?

2.也许compress: true吃多或加工过程中较少的内存?

  • 有趣的是,对于小肥胖型(< 10MB)的文件大小与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> 

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

+0

你能告诉我如何在ruby中使用ghostscripts吗?我看到了几个像gs-ruby和rghost这样的宝石,但是他们没有一个详细的例子,我们如何才能让脚本在ruby中工作。你能帮助我吗? – Renegade

+1

对不起,我只是掏空到命令行(通过反引号括起来),而不是使用gem。 –