4

本地它像魔术一样工作,但是当我尝试在服务器上生成 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'
4

2 回答 2

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" }
于 2012-03-13T15:56:54.080 回答
0

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

sudo apt-get install xvfb

解决了

于 2013-05-15T15:31:11.533 回答