Wicked-PDF not showing images, 'wicked_pdf_image_tag' undefined
Solution 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..
Solution 2
Use the wicked_pdf_image_tag
helper in your view and reference the image with asset_url
if your image is in public/images
or use asset_pack_url
if the image is in public/packs/media/images
<%= wicked_pdf_image_tag asset_url('/images/footer_logo.png') %>
or
<%= wicked_pdf_image_tag asset_pack_url('media/images/footer_logo.png') %>
Related videos on Youtube

NewbieOnRails
Updated on June 15, 2022Comments
-
NewbieOnRails 12 months
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?
-
Krzysztof Rygielski about 8 yearsAs I have said, the
wicked_pdf_image_tag
is a helper method, so it can't be used (at least it shouldn't be) in controller action. You should make a view, where you'd put in your image, and use that view to generate pdf. But to make long story short - for wicked_pdf the image paths need to be a full, absolute paths, with full file system path or full url (with domain and protocol). I'll try to come up with some simple example and post it here (unless someone beats me to it).
-
-
Joshua Pinter about 4 yearsInstall to 0.12.5 of wkhtmltopdf and see if that resolves the issue. There was a known issue with
https
image URLs prior to that version: github.com/wkhtmltopdf/wkhtmltopdf/issues/3001 -
PhilT over 1 yearThis helped me. However, as the image in my case was in
assets/images/
,asset_url('image.png')
was all I needed. Thanks.