11

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

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

RuntimeError(wkhtmltopdf 的位置未知)

我正在使用 Ruby1.9.2.p136 Rails 3.1.1

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

4

6 回答 6

13

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

只需将以下行添加到您的生产组:

gem 'wkhtmltopdf-binary'

这应该会增加对 linux-i386、amd64 和 darwin 的二进制支持。

然后运行

bundle install --without development test

在生产环境中安装 gem。之后,您只需重新启动服务器。

就这样。

我希望这有帮助

于 2013-12-27T17:11:53.113 回答
11

你使用静态 wkhtmltopdf 二进制文件吗?我在这里下载并提取到/path/to/rails_app/bin

并像这样将其添加到rails中:

#config/initializers/wicked_pdf.rb
WickedPdf.config = {
  :exe_path => Rails.root.join('bin', 'wkhtmltopdf-i386').to_s,
}
于 2011-10-11T10:49:35.777 回答
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
于 2012-08-30T16:41:56.540 回答
4

OS X Yosemite 的解决方案

要使其在 Mac OS X 10.10 (Yosemite) 上运行,请安装wkhtmltopdf-binarygem,然后将其放入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 上运行。

于 2014-10-27T04:31:04.207 回答
1

MAC OSX:

brew install wkhtmltopdf

这将让你安装

brew install Caskroom/cask/wkhtmltopdf

然后在config/initializers/wicked_pdf.rb

WickedPdf.config = {
  exe_path: '/usr/local/bin/wkhtmltopdf'
}
于 2017-02-10T10:43:33.237 回答
0

刚遇到类似的问题。

自述文件中所述,我创建了一个初始化程序:

WickedPdf.config = {
  exe_path: '/usr/local/bin/wkhtmltopdf'
}
于 2015-09-16T07:34:18.520 回答