wkhtmltopdf无法在战争中从wicked-pdf执行

问题描述 投票:1回答:2

我正在尝试使用Ruby On Rails的wicked-pdf创建pdf。它在开发模式下效果很好,但是当我在生产环境中部署时,出现错误:

wkhtmltopdf is not executable

我的wkhtmltopdf可执行文件位于:

rails_root/bin/wkhtmltopdf-i386

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

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

我配置了邪恶的pdf,可以在正确的位置找到垃圾箱:

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

我运行莺,然后将战争部署在jBoss应用服务器上。当我尝试生成PDF时,出现有关无法执行的错误。它在开发模式下运行良好-不在战争中。

对二进制文件的权限应该很好:

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

我尝试使用wkhtmltopdf-binary gem,而不是手动包括wkhtmltopdf二进制文件。这在开发模式下也可以正常工作,但是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

ruby-on-rails jruby wicked-pdf warbler
2个回答
5
投票

您是否单独安装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.loaded_specs['wkhtmltopdf-binary'].version}查询您的宝石以查找当前版本,您的产品服务器仍将能够找到正确的文件夹。


0
投票

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

显示的错误是这样:

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

这是我的解决方法

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

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

然后安装宝石

bundle install --without development test

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

sudo apt-get install libxrender1

就这些。

我希望这会有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.