Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTML String in Html2Canvas

How do we pass a valid HTML String into html2canvas?

e.g

var html = "<html><head></head><body><p>HI</p></body></html>

The way it is done on http://html2canvas.hertzen.com/screenshots.html

Html2canvas is really great and all but it's very poorly documented.

like image 703
Manak Kapoor Avatar asked Apr 20 '13 04:04

Manak Kapoor


2 Answers

Usually html2canvas renders DOM elements and not html code. But you can create a temporary iFrame, let your html render in that iFrame, and then give the generated DOM to html2canvas.

You find an example in this jsfiddle to play around, or here for your convenience:

var html_string = "<html><head></head><body><p>HI</p></body></html>";
var iframe=document.createElement('iframe');
document.body.appendChild(iframe);
setTimeout(function(){
    var iframedoc=iframe.contentDocument||iframe.contentWindow.document;
    iframedoc.body.innerHTML=html_string;
    html2canvas(iframedoc.body, {
        onrendered: function(canvas) {
            document.body.appendChild(canvas);
            document.body.removeChild(iframe);
        }
    });
}, 10);
like image 79
tessi Avatar answered Nov 07 '22 18:11

tessi


You can do as following

var iframe=document.createElement('iframe');
$('body').append($(iframe));
setTimeout(function(){
    var iframedoc=iframe.contentDocument||iframe.contentWindow.document;
    $('body',$(iframedoc)).html('<html><head></head><body><p>HI</p></body></html>');
    html2canvas(iframedoc.body, {
        onrendered: function(canvas) {
            $('body',$(document)).append(canvas);
            $('body',$(document)).remove(iframe);
        }
    });
}, 10);

See the whole code here :

DEMO

like image 26
Abdennour TOUMI Avatar answered Nov 07 '22 19:11

Abdennour TOUMI