1

我正在尝试使用来自 Ruby On Rails 的 wicked-pdf 创建一个 pdf。它在开发模式下运行良好,但是当我在生产中部署时出现错误:

wkhtmltopdf is not executable

我的 wkhtmltopdf 可执行文件位于:

rails_root/bin/wkhtmltopdf-i386

Warbler 设置为在战争中包含 bin 文件夹:

config.includes = FileList["classes/*","bin/*"]

我已经配置了 wicked pdf 以在正确的位置找到垃圾箱:

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

我运行 warbler,然后在 jBoss 应用服务器上部署战争。当我尝试生成 PDF 时,我收到关于它不可执行的错误。它在开发模式下运行良好 - 而不是在战争中。

二进制文件的权限应该没问题:

-rwxr-xr-x  1 username group 11446024 Apr  3 11:40 wkhtmltopdf-i386

我没有手动包含 wkhtmltopdf 二进制文件,而是尝试使用 wkhtmltopdf-binary gem。这在开发模式下也可以正常工作,但 Wicked PDF 在生产中找不到二进制文件。

更新:在生产模式下,我将 wicked-pdf 配置更改为指向“wkhtmltopdf-binary”gem 提供的二进制文件。它也正在wkhtmltopdf is not executable出错。路径最终是:jboss-5.1.0.GA/server/default/tmp/3j001-3g0fg5-hf2xi49o-1-hf2xiuld-9q/myrailsapp.war/WEB-INF/gems/gems/wkhtmltopdf-binary-0.9.9.1/bin/wkhtmltopdf_linux_386

4

2 回答 2

6

您是单独安装 wkhtmltopdf 还是允许您的 gem 文件安装它?

我会做以下事情:

gem 'wicked_pdf', '~> 0.9.10'
gem 'wkhtmltopdf-binary', '~> 0.9.9'

然后设置配置:

WickedPdf.config = {
  exe_path: "#{ENV['GEM_HOME']}/gems/wkhtmltopdf-binary-#{Gem.loaded_specs['wkhtmltopdf-binary'].version}/bin/wkhtmltopdf_linux_386"
}

如果您要更改 gem 的版本,此位#{Gem.loaded_specs['wkhtmltopdf-binary'].version}会查询您的 gem 以查找当前版本,您的 prod 服务器仍然能够找到正确的文件夹。

于 2014-01-29T22:08:19.120 回答
0

在Ubuntu 18.04上使用Rails 5.2.3应用程序时,我遇到了同样的问题。

显示的错误是这样的:

Gem::Exception: 找不到 gem wkhtmltopdf-binary 的可执行 wkhtmltopdf。wkhtmltopdf-binary 当前未包含在捆绑包中,也许您打算将其添加到您的 Gemfile 中?

这是我解决它的方法

我只是将wkhtmltopdf-binary gem 添加到 Gemfile 中已经有wkhtmltopdf-heroku的生产组。

group :production do
 gem 'wkhtmltopdf-heroku'
 gem 'wkhtmltopdf-binary'
end

然后安装gem

bundle install --without development test

如果您在生产服务器上运行,请尽量安装 libxrender1 库,因为它是 wkhtmltopdf(用于渲染 PDF)的依赖项,以避免在渲染 PDF 时出现错误。

sudo apt-get install libxrender1

就这样。

我希望这有帮助

于 2020-02-14T13:02:33.040 回答