我在使用 pdf_kit gem 生成 PDF 文件时遇到问题。如果我在我的应用程序控制台中运行这些命令(RAILS_ENV=production rails c):
kit = PDFKit.new(html, :page_size => 'Letter')
file = kit.to_file('./demo.pdf')
我可以看到正确生成的 pdf 文件,但是如果我在动作控制器上尝试同样的事情,这样:
kit = PDFKit.new("ciao")
kit.to_file('/root/app/bidimal/demo1.pdf')
我在 production.log 中收到此错误
RuntimeError (command failed: "/root/.rbenv/shims/wkhtmltopdf" "--encoding" "UTF-8" "--page-size" "A4" "--margin-top" "0.25in" "--margin-right" "0.25in" "--margin-bottom" "0.25in" "--margin-left" "0.25in" "--quiet" "-" "/root/app/bidimal/demo1.pdf"):
app/controllers/winners_controller.rb:69:in `invoice'
我已经使用以下方法检查了 wkhtmltopdf 的路径:
which wkhtmltopdf
/root/.rbenv/shims/wkhtmltopdf
所以我想这是正确的。顺便说一句,我在 config/initializers/pdfkit.rb
PDFKit.configure do |config|
config.wkhtmltopdf = '/root/.rbenv/shims/wkhtmltopdf'
config.default_options[:ignore_load_errors] = true
config.default_options = {
:encoding=>"UTF-8",
:page_size=>"A4",
:margin_top=>"0.25in",
:margin_right=>"0.25in",
:margin_bottom=>"0.25in",
:margin_left=>"0.25in",
:disable_smart_shrinking=>false
}
end
我在 nginx+passenger 下,问题可能与任何 nginx 设置(如可用进程等)有关吗?谢谢