rails和pdfkit无法从控制器生成pdf

时间:2013-01-01 09:28:59

标签: ruby-on-rails pdfkit

我在使用pdf_kit gem生成PDF文件时遇到问题。 如果我在我的应用程序控制台中运行这些命令(RAILS_ENV =生产轨道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 +乘客之下,问题可以在任何nginx设置(如可用的进程等)以某种方式相关联? 谢谢

1 个答案:

答案 0 :(得分:1)

最近我开始遇到wkhtmltopdf-binary gem的问题......我仍然不确定发生了什么。

为了解决这个问题,我做了以下几点:

  1. 我从我的gemfile
  2. 中删除了wkhtmltopdf-binary gem
  3. 我也在我的rbenv环境中安装了这个gem。我登录服务器并通过执行gem uninstall wkhtmltopdf-binary
  4. 删除它
  5. 我直接在我的系统上安装了wkhtmltopdf可执行文件。 (我在ubuntu所以对我的命令是sudo apt-get install wkhtmltopdf)
  6. 我在rails应用程序中创建了一个初始化程序" config / initializers / pdfkit.rb"以下
  7. PDFKit.configure do |config| config.wkhtmltopdf = '/usr/local/bin/wkhtmltopdf' end

    再次开始工作。