1

wicked_pdf(或 wkhtmltopdf)在生产模式下表现得很奇怪。找到问题需要一些时间,但似乎我的 PDF 损坏的原因是图像太多或文件太大。

当我尝试使用 300dpi 图片(4 MB)时,它坏了。当我降低到 72 dpi 时,它会起作用……有时。当我只使用缩略图时,它总是有效的。

我做了一个测试:一张带有小测试图像的封面有效。还有两张封面,……最多可以工作 30 张。当我附上封面 31 时,我的 pdf 总是损坏。

在开发中一切都很好,300dpi 图像,5 MB,50 MB,没问题。

有人知道这个问题吗?以及如何解决?:-)

PS:当我通过命令行执行 wkhtmltopdf 时,它根本没有显示任何图像,因此很难测试 wkhtmltopdf 或 wicked_pdf 是否是问题。我真的不喜欢生成 PDF!

4

1 回答 1

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 主版本具有使用临时文件而不是 I/O 流的优化。将您的 Gemfile 指向该 git://github.com/mileszs/wicked_pdf.git,看看这是否对您有所帮助。gem 的新版本可能会在接下来的几天内发布(我为 wicked_pdf 做了很多维护和发布管理)。

请回来报告。我很想知道上述任何一项或全部是否能改善这种情况。

于 2012-11-19T16:26:54.367 回答