I currently have a Recharts component that I would like to export as a PNG file.
I was able to solve my problem by delving into the Recharts component. Recharts renders as an SVG under a wrapper so all I had to do was convert properly to save as both HTML or SVG
// Exports the graph as embedded JS or PNG
exportChart(asSVG) {
// A Recharts component is rendered as a div that contains namely an SVG
// which holds the chart. We can access this SVG by calling upon the first child/
let chartSVG = ReactDOM.findDOMNode(this.currentChart).children[0];
if (asSVG) {
let svgURL = new XMLSerializer().serializeToString(chartSVG);
let svgBlob = new Blob([svgURL], {type: "image/svg+xml;charset=utf-8"});
FileSaver.saveAs(svgBlob, this.state.uuid + ".svg");
} else {
let svgBlob = new Blob([chartSVG.outerHTML], {type: "text/html;charset=utf-8"});
FileSaver.saveAs(svgBlob, this.state.uuid + ".html");
}
}
I am using FileSaver.js for the save prompt.