我意識到一個畫布不能直接呈現HTML。但是,似乎有潛在的解決方法。我不需要HTML來完美渲染,但我至少想要呈現HTML的圖像。如何製作HTML5 canvas顯示HTML?
爲此,我試圖將HTML轉換爲SVG。這適用於非常基本的HTML,但有許多用例(如包括在HTML圖像)打破:
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var img = new Image();
var data = '<svg xmlns="http://www.w3.org/2000/svg" width="' + screen.width + '" height="' + screen.height + '">' +
'<foreignObject width="100%" height="100%">' +
'<div xmlns="http://www.w3.org/1999/xhtml">' +
document.body.innerHTML +
'</div></foreignObject></svg>'
var svg = new Blob([data], {type: 'image/svg+xml;charset=utf-8'});
var url = DOMURL.createObjectURL(svg);
img.onload = function() {
ctx.drawImage(img,0,0,c.width,c.height);
DOMURL.revokeObjectURL(url);
}
img.src = url;
有越來越HTML畫布上正確顯示的更簡單的方法?
「SVG圖像不允許加載任何外部資源,例如,甚至似乎是來自同一域的。」 https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Drawing_DOM_objects_into_a_canvas嘗試http://cburgmer.github.io/rasterizeHTML.js/ –
http://html2canvas.hertzen.com/ – dandavis
看看dandavis的鏈接 - 它適用於html,風格簡單。如果你需要在更多樣式密集的頁面上工作,你可以在你的服務器上加載一個無頭瀏覽器,然後把html + css傳遞到服務器瀏覽器來創建一個圖像。我可以推薦PhantomJS:http://phantomjs.org/ – markE