Download Highchart as PNG - V2

Use canvg and msSaveOrOpenBlob for IE compatibility

by Deepak Pookkote

HTML

<script src="http://code.highcharts.com/4.0.4/highcharts.js"></script>
<script src="http://code.highcharts.com/4.0.4/modules/exporting.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/amcharts/3.10.0/exporting/canvg.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/amcharts/3.10.0/exporting/rgbcolor.min.js"></script>
<button id='save_btn'>Save Chart</button>
<div id='container'></div>

CSS

#container {
    max-width: 800px;
    height: 400px;
    margin: 1em auto;
}

JavaScript

EXPORT_WIDTH = 1000;

function save_chart(chart, filename) {
    var render_width = EXPORT_WIDTH;
    var render_height = render_width * chart.chartHeight / chart.chartWidth

    var svg = chart.getSVG({
        exporting: {
            sourceWidth: chart.chartWidth,
            sourceHeight: chart.chartHeight
        }
    });

    var canvas = document.createElement('canvas');
    canvas.height = render_height;
    canvas.width = render_width;

    canvg(canvas, svg, {
        scaleWidth: render_width,
        scaleHeight: render_height,
        ignoreDimensions: true
    });

    download(canvas, filename + '.png');
}

function download(canvas, filename) {
    download_in_ie(canvas, filename) || download_with_link(canvas, filename);
}
  
// Works in IE10 and newer
function download_in_ie(canvas, filename) {
    return(navigator.msSaveOrOpenBlob && navigator.msSaveOrOpenBlob(canvas.msToBlob(), filename));
}

// Works in Chrome and FF. Safari just opens image in current window, since .download attribute is not supported
function download_with_link(canvas, filename) {
    var a = document.createElement('a')
    a.download = filename
    a.href = canvas.toDataURL("image/png")
    document.body.appendChild(a);
    a.click();
    a.remove();
}

$(function() {

    $('#container').highcharts({
   "legend":{
      "enabled":true,
      "itemStyle":{
         "fontSize":"11px"
      },
      "floating":false
   },
   "chart":{
      "zoomType":null,
      "spacingBottom":0,
      "spacingTop":10,
      "type":"line",
      "renderTo":"applicationDiv0"
   },
   "title":{
      "useHTML":true,
      "style":{
         "fontFamily":[
            "Arial Narrow"
         ],
         "fontSize":"12pt",
         "margin-left":"100px",
         "wordWrap":"break-word",
         "text-align":"center"
      },
      "align":"center",
      "text":"<p>Header Line Text</p><p>Line 2</p>Line 3",
      "margin":10
   },
   "xAxis":{
      "labels":{
         
      },
     ...