wkhtmltopdf RuntimeError(wkhtmltopdf的位置未知)

时间:2011-10-11 09:29:59

标签: ruby-on-rails ruby centos wkhtmltopdf wicked-pdf

我正在使用Ubuntu 11.04在Ruby on Rails中开发应用程序。 在应用程序中,我需要生成pdf文档。所以我正在使用 wicked_pdf和wkhtmltopdf-binary gems。

在我的系统的开发环境中,一切正常。 但是,一旦我使用Phusion在CentOS 5.6上部署应用程序 乘客,当我试图动态生成pdf时,它给我以下错误:

RuntimeError(wkhtmltopdf的位置未知)

我使用的是Ruby1.9.2.p136            Rails 3.1.1

任何帮助将不胜感激....谢谢。

6 个答案:

答案 0 :(得分:10)

你使用静态wkhtmltopdf二进制文件?我将其下载here并将其加到/path/to/rails_app/bin

并将其添加到rails中:

#config/initializers/wicked_pdf.rb
WickedPdf.config = {
  :exe_path => Rails.root.join('bin', 'wkhtmltopdf-i386').to_s,
}

答案 1 :(得分:10)

另一种方法是通过Gemfile安装二进制文件。

只需添加以下行:

gem 'wkhtmltopdf-binary'

那应该为linux-i386,amd64和darwin添加二进制支持。

答案 2 :(得分:8)

对于mac os - x你应该通过homebrew安装wkhtmltopdf

$ brew tap homebrew/boneyard # the wkhtmltopdf formula is now inactive but still available in the boneyard repository 
$ brew install wkhtmltopdf

答案 3 :(得分:4)

OS X约塞米蒂的解决方案

要使其在Mac OS X 10.10(Yosemite)上运行,请安装wkhtmltopdf-binary gem,然后将其放入config/initializers/wicked_pdf.rb

module WickedPdfHelper
  if Rails.env.development?
    if RbConfig::CONFIG['host_os'] =~ /linux/
      executable = RbConfig::CONFIG['host_cpu'] == 'x86_64' ? 'wkhtmltopdf_linux_x64' : 'wkhtmltopdf_linux_386'
    elsif RbConfig::CONFIG['host_os'] =~ /darwin/
      executable = 'wkhtmltopdf_darwin_386'
    else
      raise 'Invalid platform. Must be running linux or intel-based Mac OS.'
    end

    WickedPdf.config = { exe_path: "#{Gem.bin_path('wkhtmltopdf-binary').match(/(.+)\/.+/).captures.first}/#{executable}" }
  end
end

Ps。:此解决方案也适用于Linux。

答案 4 :(得分:1)

MAC OSX:

brew install wkhtmltopdf

这将允许您安装

brew install Caskroom/cask/wkhtmltopdf

然后在config/initializers/wicked_pdf.rb

WickedPdf.config = {
  exe_path: '/usr/local/bin/wkhtmltopdf'
}

答案 5 :(得分:0)

刚遇到类似的问题。

readme所述,我创建了一个初始化程序:

WickedPdf.config = {
  exe_path: '/usr/local/bin/wkhtmltopdf'
}