IMGKit icon indicating copy to clipboard operation
IMGKit copied to clipboard

Image from HTML is not rendered in generated image

Open Magesh-B opened this issue 5 years ago • 3 comments

I want to convert an HTML page into JPG image using IMGKit gem and wkhtmltoimage-binary, In my HTML page, there is a div class whose background is an image (styled inline), While converting this HTML page, the div background image is not rendered and remaining styles and contents are rendered in the generated image. I also tried IMG SRC tag in HTML, the image is not rendered if it's source is an url.

html = %Q[]

kit = IMGKit.new(html,:height => 300,:quality => 50)

img = kit.to_img

img = kit.to_img(:jpg)

file = kit.to_file('file.jpg')`

In the generated image, the img src is not rendered and it remains blank! It could be great if anyone help me figure out how to use url in image src.

Magesh-B avatar May 04 '20 06:05 Magesh-B

Also having this problem

evidentsnow avatar Jun 16 '21 21:06 evidentsnow

experiencing the same problem here, anyone find a fix?

Here's my setup;

Gemfile


gem 'wkhtmltopdf-binary', "0.12.4"
gem "wkhtmltoimage-binary", "0.12.4"

donrestarone avatar Dec 01 '23 16:12 donrestarone

Looks like a wkhtmltopdf issue: https://github.com/wkhtmltopdf/wkhtmltopdf/issues/2913 Unfortunately, wkhtmltopdf is not mantained anymore. That said, I used the most recent workaround suggested in the issue and it worked for me:

<style>
img.emoji {
   height: 1em;
   width: 1em;
   margin: 0 .05em 0 .1em;
   vertical-align: -0.1em;
}
</style>
<script src="https://twemoji.maxcdn.com/v/latest/twemoji.min.js"></script>
<script>window.onload = function () { twemoji.parse(document.body);}</script>

EDIT

MaxCDN has been retired and twemoji is unmaintained. I was able to keep this workaround working by using a fork:

<style>
img.emoji {
   height: 1em;
   width: 1em;
   margin: 0 .05em 0 .1em;
   vertical-align: -0.1em;
}
</style>
 <script src="https://cdn.jsdelivr.net/npm/@twemoji/api@latest/dist/twemoji.min.js"crossorigin="anonymous"></script>
<script>window.onload = function () { twemoji.parse(document.body); }</script>

CarlosDomingues avatar Dec 06 '23 18:12 CarlosDomingues