wicked_pdf(或wkhtmltopdf)在生产模式下表现得很奇怪。追踪问题需要一些时间,但看起来我的PDF被破坏的原因是图像太多或文件太大。
当我尝试使用300dpi pic(4 MB)时,它已经坏了。当我减少到72 dpi时,它有效...当我只使用缩略图时,它始终有效。
我做了一个测试:一张带有小测试图像的封面页。还有两张封面,......最多可以使用30张。当我附上封面31时,我的pdf总是被打破。
在开发中一切都很好,300dpi图像,5 MB,50 MB,没问题。
有人知道这个问题吗?以及如何解决它? : - )
PS:当我通过命令行执行wkhtmltopdf时它根本没有显示任何图像,因此很难测试wkhtmltopdf或wicked_pdf是否是问题。我真的不喜欢生成PDF格式!
答案 0 :(得分:1)
wkthmltopdf尽最大努力收集并呈现pdf中的所有资源,就像为其提供支持的webkit浏览器一样。如果它无法及时检索和渲染它们,它有时会输出未完成的pdf。
我们可以检查或执行一些操作来优化此过程。
确保所有资源(图片,javascript,css)都使用完整路径正确呈现,例如' http://images/foo.jpg',而不是像#/; foo.jpg'
这会导致wkhtmltopdf通过网络访问以获取这些资产,有时这还不够快,所以如果可以,请尝试使用文件系统资源链接,例如' file:/// projects /foo/images/foo.jpg' ;. wicked_pdf_image和其他相关帮助程序会尝试为您执行此操作,但根据您所使用的Rails版本,结果可能会略有不同。
Wkhtmltopdf使用大量内存和CPU(尤其是大图片),请确保您的生产服务器不会因此而挨饿。
wicked_pdf的git master版本有一个优化来使用临时文件而不是I / O流。将您的Gemfile指向该git://github.com/mileszs/wicked_pdf.git并查看是否可以改善您的工作。新版本的gem可能会在接下来的几天内发布(我为wicked_pdf做了大量的维护和发布管理)。
请报告回来。我有兴趣知道上述任何一项或全部是否能改善这种情况。