如何将包含(图像标记和某些文本)的HTML代码或数据转换为图像以供下载

我想渲染一些Html代码作为图像下载我的网站。 我正在使用html2canvas工作正常,为文本创建图像,但我想从html div,img,text,paragraph创建图像。

我使用下面的代码将html渲染成图像

     

HTML content to render:

Hello visiting guest

Existing canvas:

var canvas = document.querySelector("canvas"); var ctx = canvas.getContext("2d"); var ctx = canvas.getContext('2d'); document.querySelector("button").addEventListener("click", function() { html2canvas(document.querySelector("#content"), {canvas: canvas}).then(function(canvas) { console.log('Drew on the existing canvas'); }); }, false);

我尝试了一些第三方api来实现图像但是它们是一个限制。所以我想使用代码实现这一点。 我怎么能做到这一点。

我想要一张下面caode的图片

 

HTML content to render:

Hello visiting guest

我想得到这样的结果

在此处输入图像描述

使用rasterizeHTML.js :

从示例:

   

要不就:

 rasterizeHTML.drawURL("http://example.net", canvas); 

要下载图像,请使用canvas2image (带有隐藏的canvas):

 Canvas2Image.saveAsPNG(canvas, width, height); 

在客户端上进行渲染的主要优点是html可以是特定于用户的,并且服务器不必渲染图像。

您可以将html嵌入到svg中以在canvas上呈现它,例如

HTML:

  

JS:

 var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); var data = '' + '' + '
' + 'I like ' + '' + 'SO' + '
' + '
' + '
'; var DOMURL = window.URL || window.webkitURL || window; var img = new Image(); 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); DOMURL.revokeObjectURL(url); } img.src = url;

小提琴: https : //jsfiddle.net/qkvu7fmL/

我无法找到对此示例的原始来源的引用 – 如果有人知道 – 请添加信用作为评论。