getImageURI()无法通过谷歌的orgchart工作

时间:2016-07-28 09:35:55

标签: javascript jquery charts google-visualization google-chartwrapper

Fiddle

我创建了这个小提琴但是当从图表(orgchart google charts)中尝试getImageURI()时会产生一个错误。

  

错误:“未捕获的TypeError:chart.getImageURI不是函数”

我需要从创建的orgchart生成图像或PDF。有可能吗?

google.charts.load('current', {packages:["corechart","orgchart"]});
google.charts.setOnLoadCallback(drawChart);

function drawChart() {
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Name');
    data.addColumn('string', 'Manager');
    data.addColumn('string', 'ToolTip');

    // For each orgchart box, provide the name, manager, and tooltip to show.
    data.addRows([
      [{v:'Mike', f:'Mike<div style="color:red; font-style:italic">President</div>'},
       '', 'The President'],
      [{v:'Jim', f:'Jim<div style="color:red; font-style:italic">Vice President</div>'},
       'Mike', 'VP'],
      ['Alice', 'Mike', ''],
      ['Bob', 'Jim', 'Bob Sponge'],
      ['Carol', 'Bob', '']
    ]);

    // Create the chart.
    var chart = new google.visualization.OrgChart(document.getElementById('chart_div'));

    google.visualization.events.addListener(chart, 'ready', function () {
        $( "#chart_div2" ).append( '<img src="' + chart.getImageURI() + '">' );
    });
    // Draw the chart, setting the allowHtml option to true for the tooltips.
    chart.draw(data, {allowHtml:true});
}

2 个答案:

答案 0 :(得分:2)

Table Charts类似,组织结构图生成HTML <table>元素,而不是SVG

这就是为什么getImageURI未列在任何图表的Methods部分

中的原因

建议使用库将HTML转换为Canvas(html2canvas.js),
然后可以保存为base64字符串,
类似于getImageURI

请参阅此答案,了解有关该主题的更多信息...
Rendering HTML elements to canvas

答案 1 :(得分:1)

尝试此代码:

    function printImg() {
        html2canvas($('#chart_div').get(0)).then( function (canvas) {
            var image = convertCanvasToImage(canvas);
            var htmlToPrint = image.outerHTML ;
            newWin = window.open("");
            newWin.document.write(htmlToPrint);
            newWin.print();
            newWin.close();
        });
    }

别忘了包含html2canvas.js