You can use html2canvas to create a canvas from any dom element (including svg elements).
However, the style definitions for svg elements defined in style sheets do not apply to the generated canvas. This can be fixed by adding style definitions to svg elements before calling html2canvas.
Inspired by this article , I created this:
function generateStyleDefs(svgDomElement) { var styleDefs = ""; var sheets = document.styleSheets; for (var i = 0; i < sheets.length; i++) { var rules = sheets[i].cssRules; for (var j = 0; j < rules.length; j++) { var rule = rules[j]; if (rule.style) { var selectorText = rule.selectorText; var elems = svgDomElement.querySelectorAll(selectorText); if (elems.length) { styleDefs += selectorText + " { " + rule.style.cssText + " }\n"; } } } } var s = document.createElement('style'); s.setAttribute('type', 'text/css'); s.innerHTML = "<![CDATA[\n" + styleDefs + "\n]]>";
source share