c3.js - 如何将 C3 和 D3 图表导出为 PDF?

标签 c3.js

我正在研究 Highcharts、C3 和 D3 图表。我需要以 PDF 格式导出图表。 Highcharts有导出图表的功能,但C3和D3没有此功能。

我尝试使用图表的 SVG 导出图表。我能够使用 SVG 导出单个图表,但当我尝试导出页面上的所有可用图表时,它只导出一个图表。

function exportDonutCharts(){
  var svgArr = [],
  top = 0
  var height = $j(window).height()/2 + 50;
  var chartWidth = $j(window).width() / 2;

  $j(".donut").each(function(){
      if($j(this).hasClass("c3"))
      {
        // retrieving svg for all the charts one by one and adding to array

          var svg = $j(this).children()[0].outerHTML.replace('<svg', '<g transform="translate(0,' + top + ')" version="1.1" xmlns="http://www.w3.org/2000/svg');
         svg = svg.replace('</svg>', '</g>');
         top += height + 50;
         svgArr.push(svg);
      }
  });

  var allChartSVG = '<svg height="'+ top +'" width="' + chartWidth + '" version="1.1" xmlns="http://www.w3.org/2000/svg">' + svgArr.join('') + '</svg>';
  Highcharts.exportDonutCharts(allChartSVG);
}

Highcharts.exportDonutCharts = function(svg, options) {
    var form;

    // merge the options
    options = Highcharts.merge(Highcharts.getOptions().exporting, options);

    // create the form
    form = Highcharts.createElement('form', {
        method: 'post',
        action: "http://export.highcharts.com/"
    }, {
        display: 'none'
    }, document.body);

    // add the values
    Highcharts.each(['filename', 'type', 'width', 'svg'], function(name) {
        Highcharts.createElement('input', {
            type: 'hidden',
            name: name,
            value: {
                filename: options.filename || 'multipleCharts',
                type: options.type,
                width: options.width,
                svg: svg
            }[name]
        }, null, form);
    });
    //console.log(svg); return;
    // submit
    form.submit();

    // clean up
    form.parentNode.removeChild(form);
};

最佳答案

不确定这是否有帮助,但我能够使用 this library 获得漂亮的 PDF 导出,其中包含一堆 c3 图表。 。不幸的是,它还要求您加载 jQuery,但它导出得很好。

我制作了一个具有页面尺寸的容器来帮助布局,必须依赖表格来存储列和内容。如果您深入研究下载中提供的示例,您应该能够完成您需要的工作。

关于c3.js - 如何将 C3 和 D3 图表导出为 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28983240/

相关文章:

javascript - Javascript 中的 C3 图表 json 数据格式

javascript - 如何重新缩放时间序列的 x 轴(C3js)?

javascript - 如何在 C3 图表上动态设置饼图文本颜色

javascript - C3 图表不从 jQuery 数据呈现

javascript - 如何从某些函数构建c3js线图,而不仅仅是带有随机数的简单数组?

javascript - 如何使用 c3js 在饼图上显示自定义标签?

javascript - 图表不会在 `onchange` 函数中重绘

javascript - 在 c3.js 中绘制这些点 xy

c3.js 如何删除带有工具提示的行?

javascript - 在 c3.js 中从 csv 文件创建分类条形图