生产服务器上的wicked_pdf

Mr_*_*zle 4 pdf production pdf-generation ruby-on-rails-3 wicked-pdf

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

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

这是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
Run Code Online (Sandbox Code Playgroud)

在我的Gemfile中

gem 'wicked_pdf'
gem 'wkhtmltopdf-binary'
Run Code Online (Sandbox Code Playgroud)

Mr_*_*zle 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" }