Gemfile
gem "wicked_pdf"
gem "wkhtmltopdf-binary"
错误:
RuntimeError in CarsController#show
Failed to execute:
/usr/bin/wkhtmltopdf --print-media-type -q - -
Error: PDF could not be generated!
Rails.root: /u/apps/zeepauto/autozeep_update
汽车_controller
def show
@class_showcar = true
@class_admin = true
@car = Car.find(params[:id])
@search = Car.search(params[:search])
@cars_see_special = Car.where(:special => "1").order('rand()').limit(3)
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @car }
format.pdf do
render :pdf => "#{@car.carname.name}",
:print_media_type => true
end
end
end
show.html.erb
<p class="show_links"><%= link_to url_for(request.params.merge(:format => :pdf)) do %>
<%= image_tag('/images/printversion.png', :alt => 'Download') %>
</p>
wicked_pdf.erb
# config/initializers/wicked_pdf.rb
WickedPdf.config = {
# :exe_path => '/var/lib/gems/1.8/bin/wkhtmltopdf'
:exe_path => '/usr/bin/wkhtmltopdf'
}
8条答案
按热度按时间im9ewurl1#
我也有同样的问题。解决方案是将
wkhtmltopdf-binary
添加到gem文件并运行bundle install
。eeq64g8w2#
我有
wkhtmltopdf-binary
已经在gemfile
,但由于这是工作在我的本地计算机上,而不是在服务器上,我留下这个错误给服务器支持团队照顾。他们已经检查了wkhtmltopdf的路径,他们试图将一个简单的html转换为pdf,它工作了。因此,他们试图运行一个bundle update
命令,在此之后,PDF转换在服务器上也工作得很好。我有一个宝石路径改变,我想这是问题。我发布了我的解决方案,以防其他人也会有这个问题。wvt8vs2t3#
对于Alpine 3.9+,wkhtmltopdf二进制文件是可用的,但是我得到了一个空白的PDF或“加载文档失败”错误-尽管在MacOSX上本地工作正常。事实证明,对于Alpine构建(至少),您需要显式地包含字体
控制器动作
上面的操作在MacOSX机器上运行,但在基于ruby alpine映像的服务器上运行,如下所示,它失败了,无法加载文档
Dockerfile
即使是一个更基本的例子也失败了,一个空白的pdf
解决方案
Dockerfile
理想情况下,Alpine会在
wkhtmltopdf
包中包含一个基本字体,但在此之前,我发现这是一个有用的信息源和/或添加多阶段Docker文件的好方法。https://github.com/madnight/docker-alpine-wkhtmltopdf/blob/master/Dockerfile
注意:
alpine中缺少明确的字体包也可能导致使用
libreoffice
进行PDF转换失败。特别是从docx文件转换时,我们发现损坏的PDF文件。8qgya5xd4#
我也有同样的问题。我安装了
wkhtmltopdf-binary
,但bundle update
也没有帮助。以下是帮助我的:重要的是,我在Alpine Linux上运行它,它似乎不受gem wkhtmltopdf_binary_gem https://github.com/zakird/wkhtmltopdf_binary_gem/issues/53的支持
我在系统中单独安装了wkhtmltopdf:
apk add wkhtmltopdf
然后编辑初始化器以包含二进制路径:
tyky79it5#
我也遇到了同样的问题,它在本地机器上工作正常,但在服务器上部署时会引发错误:
在我的例子中,服务器上缺少一些依赖项。在服务器上使用以下命令安装依赖项。
sudo apt-get install libfontconfig1 libxrender1
rn0zuynd6#
我在使用 Ubuntu 20.04 时遇到了同样的问题。
我使用wkhtmltopdf-binary版本
0.12.6.1
解决了这个问题。pxyaymoc7#
如果你在docker容器中遇到这个问题,很可能你正在使用Alpine Linux。在这种情况下,
wkhtmltopdf-binary
与Alpine Linux不兼容。所以,添加这些gem:wkhtmltopdf-binary-edge-alpine
用于Alpine Linux。希望一切正常😂dgiusagp8#
对我来说,以上都不起作用,因为我在arm64 macOS架构上使用Docker,我不想使用模拟容器。取而代之的是,获得我的架构的包并将其安装在容器上,然后使用它而不是gem。以下是我在安装所有gem后在Dockerfile中所做的:
希望这个能帮上忙