Wicked-PDF not showing images, 'wicked_pdf_image_tag' undefined

 ̄綄美尐妖づ 提交于 2019-12-12 07:47:20

问题


I want to generate a PDF with our department logo in it. When I try to use the WickedPdf class in my controller (using the method described at https://github.com/mileszs/wicked_pdf):

def some_action
  image_tag_string = image_tag('logo.jpg')
  pdf = WickedPdf.new.pdf_from_string(image_tag_string)

  save_path = Rails.root.join('testpdfs','logotest.pdf')
  File.open(save_path, 'wb') do |file|
    file << pdf
  end
end

...the application saves the PDF to the target directory, but it has a blue-and-white '?' mark where the image should be.

If I do this instead:

  image_tag_string = wicked_pdf_image_tag('logo.jpg')
  pdf = WickedPdf.new.pdf_from_string(image_tag_string)

I get the following error:

NoMethodError:
   undefined method `wicked_pdf_image_tag' for #<...

It would appear that my Rails app is also missing / not linking to a helper file belonging to the wicked-pdf gem.

Answers to similar questions on StackOverflow recommend writing a custom "image-tag" helper to locate the image or installing wkhtmltopdf. For me, image-tag shows the logo just fine when placed in a View (whatever.html.erb). "logo.jpg" is already located in both the asset pipeline and #{RailsRoot}/public/images. Finally, I am using wkhtmltopdf 0.9.9, wicked-pdf 0.11.0, and rails 4 on Ubuntu 14.04.

In a nutshell - what am I doing wrong that causes WickedPDF to fail to render the image?


回答1:


First thing create a pdf template to render and use your wicked_pdf tags in that template.. for example-

app/views/layout/application.pdf.erb-

<!doctype html>
<html>
  <head>
    <meta charset='utf-8' />
  </head>
  <body onload='number_pages'>
    <div id="content">
      <%= yield %>
    </div>
  </body>
</html>

app/views/pdf/pdf_view.pdf.erb-

<div>
  <%= wicked_pdf_image_tag 'logo.jpg' %>
</div>

use this template instead

def save
  pdf = WickedPdf.new.pdf_from_string(
                        render_to_string(
                          template: 'example/pdf_view.pdf.erb',
                          layout: 'layouts/application.pdf.erb'))
  send_data(pdf,
            filename: 'file_name.pdf',
            type: 'application/pdf',
            disposition: 'attachment') 
end

This might help you..




回答2:


I converted image url that 'http' from 'https'. Than worked.

Heroku-18
Rails 4.2
wicked_pdf (1.1.0)
wkhtmltopdf-binary (0.12.4)


来源:https://stackoverflow.com/questions/30110344/wicked-pdf-not-showing-images-wicked-pdf-image-tag-undefined

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!