生产服务器上的wicked_pdf

时间:2012-03-12 17:42:59

标签: ruby-on-rails-3 pdf pdf-generation production wicked-pdf

本地它像魔术一样工作,但当我尝试在服务器上生成PDF时,它会:

RuntimeError (Failed to execute:
"/path/to/my/project/vendor/bundle/ruby/1.9.1/bin/wkhtmltopdf"       -q - - 
Error: Broken pipe):

以下是 my_controller 的内容。

format.pdf do
    pdf = render_to_string(
            :pdf => "invoice",
            :template => "my_controller/my_view.pdf.erb",
            :layout=>"pdf.html.erb"
        )
    save_path = Rails.root.join('pdfs','invoice.pdf')
    File.open(save_path, 'wb') do |file|
        file << pdf
    end
    send_file(save_path)
end

在我的 Gemfile

gem 'wicked_pdf'
gem 'wkhtmltopdf-binary'

2 个答案:

答案 0 :(得分:17)

修复了已删除的系统安装wkhtmltopdf并使用wkhtmltopdf的二进制文件:

  1. 卸载wkhtmltopdf软件包:apt-get remove wkhtmltopdf --purge
  2. (在usr / local / bin中)sudo curl -C - -O http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-amd64.tar.bz2
  3. (在usr / local / bin中)sudo tar -xvjf wkhtmltopdf-0.9.9-static-amd64.tar.bz2
  4. (在usr / local / bin中)ln -s wkhtmltopdf-amd64 wkhtmltopdf
  5. 在您的初始化程序WickedPdf.config = { :exe_path => "/usr/local/bin/wkhtmltopdf" }

答案 1 :(得分:0)

对于遇到此问题的其他人,我们使用不同的解决方案时出现相同的错误消息。我们没有运行无头浏览器:

sudo apt-get install xvfb

解决了它