How to save an image of the chart on the server with highcharts?

前端 未结 4 1965
一向
一向 2020-11-29 03:04

With highcharts, you have a built-in button to download the current chart (example: http://www.highcharts.com/demo/, this button:

4条回答
  •  南方客
    南方客 (楼主)
    2020-11-29 03:49

    It could be done really easy with PhantomJS. You can render Highchart chart and save it to SVG, PNG, JPEG or PDF. The example below renders a demo Highcharts diagram to SVG and PDF at the same time:

    var system = require('system');
    var page = require('webpage').create();
    var fs = require('fs');
    
    // load JS libraries
    page.injectJs("js/jquery.min.js");
    page.injectJs("js/highcharts/highcharts.js");
    page.injectJs("js/highcharts/exporting.js");
    
    // chart demo
    var args = {
        width: 600,
        height: 500
    };
    
    var svg = page.evaluate(function(opt){
        $('body').prepend('
    '); var chart = new Highcharts.Chart({ chart: { renderTo: 'container', width: opt.width, height: opt.height }, exporting: { enabled: false }, title: { text: 'Combination chart' }, xAxis: { categories: ['Apples', 'Oranges', 'Pears', 'Bananas', 'Plums'] }, yAxis: { title: { text: 'Y-values' } }, labels: { items: [{ html: 'Total fruit consumption', style: { left: '40px', top: '8px', color: 'black' } }] }, plotOptions: { line: { dataLabels: { enabled: true }, enableMouseTracking: false }, series: { enableMouseTracking: false, shadow: false, animation: false } }, series: [{ type: 'column', name: 'Andrii', data: [3, 2, 1, 3, 4] }, { type: 'column', name: 'Fabian', data: [2, 3, 5, 7, 6] }, { type: 'column', name: 'Joan', data: [4, 3, 3, 9, 0] }, { type: 'spline', name: 'Average', data: [3, 2.67, 3, 6.33, 3.33], marker: { lineWidth: 2, lineColor: 'white' } }, { type: 'pie', name: 'Total consumption', data: [{ name: 'Andrii', y: 13, color: '#4572A7' }, { name: 'Fabian', y: 23, color: '#AA4643' }, { name: 'Joan', y: 19, color: '#89A54E' }], center: [100, 80], size: 100, showInLegend: false, dataLabels: { enabled: false } }] }); return chart.getSVG(); }, args); // Saving SVG to a file fs.write("demo.svg", svg); // Saving diagram as PDF page.render('demo.pdf'); phantom.exit();

    If you save the code as demo.js, then just run bin/phantomjs demo.js to generate demo.svg and demo.pdf

提交回复
热议问题