【发布时间】:2012-09-16 10:20:18
【问题描述】:
我有一个 Ruby on Rails 3.2 应用程序,它使用 wicked_pdf gem 和 wkhtmltopdf 0.9.9 库在我的本地机器上生成 PDF,这是一个 MAC OSX 10.7.5 狮子。该应用成功地将 HTML 页面(包括 SVG 图像)呈现为 PDF 文件,这正是我们希望该应用完成的行为。
在本地,由于 OSX 的 11.0.0 版本存在错误,我们不得不使用 wkhtmltopdf 0.9.9。
问题在于,当应用程序在 Heroku 上推送到生产环境时,它必须使用不同的二进制文件:wkhtmltopdf-0.9.9 Linux Static Binary (amd64) 并且 SVG 渲染似乎下降了分开。生成了 PDF,但 SVG 图像未正确呈现。它们只是图像应该存在的空白或方形“外壳”。
我们尝试使用 wkhtmltopdf-heroku gem,但一直收到“Broken Pipe”错误。
没有与此问题相关的错误消息,我们不知道问题出在 Linux 版本上。有什么想法吗?
这是我们在config/initializers/wicked_pdf.rb 文件中的代码:
if Rails.env.staging? || Rails.env.production?
exe_path = Rails.root.join('bin', 'wkhtmltopdf-amd64').to_s
else
exe_path = Rails.root.join('bin', 'wkhtmltopdf').to_s
end
【问题讨论】:
-
+1,有类似的问题。当我将 :javscript_delay 添加到控制器中的 pdf 渲染时,PDF 生成中断,并且我还收到“Broken Pipe”错误。
-
我们放弃了...开始改用 Prawn
-
对于它的价值,我使用“wkhtmltopdf-binary”gem 在 heroku 上渲染 SVG。我查看了“wkhtmltopdf-heroku”gem,但似乎“wkhtmltopdf-binary”gem 在 Rails 3.2 / heroku 上运行良好。我不想看到你必须使用虾,看起来真的很痛苦。
-
我相信这与wkhtmltopdf使用Xserver渲染SVG有关。在 0.11.0 版本中,我需要将 use_xserver 设置为 true,但我不确定是否可以在 Heroku 中使用 Xserver。我相信当你添加 :javascript_delay 并得到 Broken pipe 错误时的问题是 javascript_delay 是一个 0.11.0 命令,它取代了 0.9.9 中的 redirect_delay。
标签: ruby-on-rails heroku svg wkhtmltopdf wicked-pdf