J'essaie d'exporter un html assez simple vers la toile puis le png. Pour ce faire, j'utilise rasterizeHTML ( http://cburgmer.github.io/rasterizeHTML.js/ ). Le problème auquel je suis confronté est que je reçois un avertissement comme si je charge une image / ressource externe, mais je ne le suis pas. C'est ce que j'ai essayé:
HTML:
<canvas height="500" width="500" id="rasterizer"></canvas>
Javascript
var canvas=document.getElementById("rasterizer"); rasterizeHTML.drawHTML('<div width="300px" height="300px" > <div style="width: 200px;height: 200px;position: absolute;top: 50%;left: 50%;margin: -100px 0 0 -100px;"><div style="width: 100%;height: 100%;border-radius: 50%;position: absolute;top: 0;left: 0;margin: 0;z-index: 1;background: #e4f1ea; "> </div> <div style="border-radius: 50%;position: absolute;top: 50%;left: 50%;z-index: 3;background: #b6cfe1;width:73.997475122531%; height:73.997475122531%; margin:-36.998737561265% 0 0 -36.998737561265%"></div> </div></div>',canvas); canvas.toDataURL("image/png");
Le html rend juste 2 cercles, l'un au-dessus de l'autre. Rasterizer est capable de montrer cela dans la toile sans problème, mais alors lorsque j'essaie d'exécuter .toDataURL, je finis avec l'un des deux problèmes:
Je ne sais pas d'idées, car cela devrait se produire avec des ressources externes, pas avec entièrement inline-d html. Quelqu'un sait pourquoi cela pourrait se produire? Merci.
Il y a des choses au travail ici:
Vous devriez attendre pour rasterizeHTML.drawHTML
pour terminer avant d'attendre quoi que ce soit du canevas:
rasterizeHTML.drawHTML('<div...', canvas, function () { var dataUrl = canvas.toDataURL("image/png"); console.log(dataUrl); });
Safari & Webkit ne peut pas lire le lien une fois que HTML (en fait un SVG) a été dessiné là-bas. Voir https://github.com/cburgmer/rasterizeHTML.js/wiki/Browser-issues#wiki-webkit . Un bug a été déposé avec Chrome et Safari (encore une fois, voir le lien), mais jusque là, Firefox est tristement le seul navigateur qui vous permet de lire le formulaire.