当使用Wicked_pdf gem和wkhtmltopdf-binary-edge

时间:2016-09-13 01:44:32

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

我正在尝试使用`'wicked_pdf'宝石来打印我的视图的PDF。这是我第一次使用这个宝石。我已经阅读了文档和Google搜索,我也在Stack Overflow上发现了一些类似的问题但似乎没有什么可以做到的。

我已经验证了二进制文件(参见下面的编辑),它们工作正常,所以问题不存在。

我在运行rails s时在终端中发现了两条奇怪的行(请参见底部的编辑)

我一直在寻找解决方案,连续三天,并且无法解决这个问题。

我在这里错过了什么吗?

服务器不断挂起终端

中的输出
Rendered pages/partials/_travel_part.html.erb (36.6ms)
  Rendered users/show.html.erb within layouts/application (531.7ms)
  Rendered layouts/_navbar.html.erb (2.6ms)
  Rendered shared/_footer.html.erb (0.8ms)
Completed 200 OK in 1640ms (Views: 1115.4ms | ActiveRecord: 136.0ms)
"***************[\"/usr/local/bin/wkhtmltopdf\", \"-q\", \"file:////var/folders/sm/zwm8cy0x73qb6q1pq22r4bjh0000gn/T/wicked_pdf20160913-35465-hkw9b8.html\", \"/var/folders/sm/zwm8cy0x73qb6q1pq22r4bjh0000gn/T/wicked_pdf_generated_file20160913-35465-10go9dt.pdf\"]***************"

以下是我到目前为止的情况。

我想打印views/users/show.html.erb所以users_controller.rb我在show方法中有此代码

def show

    @user = User.find(params[:id])
  @users = User.order('created_at DESC').paginate(page: params[:page], per_page: 30)

@paper = current_user.papers.build
@electro = current_user.electros.build
@hwater = current_user.hwaters.build
@cleaning = current_user.cleanings.build
@transport = current_user.transports.build

@papers = current_user.papers

respond_to do |format|
                format.html {render layout:'application'}

               format.pdf {render pdf:"test",javascript_delay:2000,
                layout:'application',template:'users/show.pdf.erb'}
        end
end

application.html.erb我使用head

wicked pdf helper中有此内容
 <%= wicked_pdf_stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
 <%= wicked_pdf_javascript_include_tag 'application', 'data-turbolinks-track' => true %>
 <%= javascript_include_tag "http://www.google.com/jsapi"%>
 <%= wicked_pdf_javascript_include_tag 'chartkick'%>

 <%= csrf_meta_tags %>

views/users/show.html.erb中的按钮是

 <%= link_to 'Download Pdf', user_path(current_user, format: :pdf) %>

config/initializers/mime_types.rb我有这段代码

 Mime::Type.register "application/pdf", :pdf

config/initializers/wicked_pdf.rb我有这段代码

WickedPdf.config = {
 #:wkhtmltopdf => '/usr/local/bin/wkhtmltopdf',
 #:layout => "pdf.html",
  :exe_path => '/usr/local/bin/wkhtmltopdf'
 }

gemfile.rb我有两个宝石:

 gem 'wicked_pdf', '~> 1.0', '>= 1.0.6'
 gem 'wkhtmltopdf-binary-edge'

修改*

好的,我已通过在终端中键入此wkhtmltopdf google.com google验证了二进制文件是否正常工作。所以我的结论是问题出在其他地方,而不是wkhtmltopdf。但是哪里?我还是找不到......

(AddingWickedPdf) $ wkhtmltopdf google.com    google
Loading pages (1/6)
Counting pages (2/6)                                               
Resolving links (4/6)                                                       
Loading headers and footers (5/6)                                           
Printing pages (6/6)
Done                                                                      
(AddingWickedPdf) $ 

另一个编辑

当我早些时候启动服务器rails s到晚上时,我注意到终端中有这些行,我不知道这意味着什么,但我确定它与渲染pdf时挂起的应用程序有关:

/Users/dadi/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/http/mime_type.rb:163: warning: already initialized constant Mime::PDF
/Users/dadi/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack- 4.2.5/lib/action_dispatch/http/mime_type.rb:163: warning: previous definition of  PDF was here

如果有人可以看一下这个并引导我走上正确的道路,那就太棒了。

提前谢谢 DH

1 个答案:

答案 0 :(得分:1)

答案最初发布在这里:

How rails resolve multi-requests at the same time?

随后在这里适应了这个问题(最后的答案):

PDFkit hangs when generating a pdf with an image