Highcharts:“全部打印”按钮

是否可以为Highcharts创建“全部打印”按钮,其中打印的图表多了一个?

我知道可以导出多个图表,如jFiddle: http : //jsfiddle.net/highcharts/gd7bB/1/所示,但我不确定Highcharts是否允许使用类似的打印方法。

这是一种直接进行打印的替代解决方案。 它基于chart.print()函数,但它适用于多个图表。

请参阅此处的演示 : http : //jsfiddle.net/jim31415/q5Rzu/150/

//-------------------------------------------------------------------- $("#print").click(function () { printCharts([chart1, chart2, chart3]); }); //-------------------------------------------------------------------- function printCharts(charts) { var origDisplay = [], origParent = [], body = document.body, childNodes = body.childNodes; // hide all body content Highcharts.each(childNodes, function (node, i) { if (node.nodeType === 1) { origDisplay[i] = node.style.display; node.style.display = "none"; } }); // put the charts back in $.each(charts, function (i, chart) { origParent[i] = chart.container.parentNode; body.appendChild(chart.container); }); // print window.print(); // allow the browser to prepare before reverting setTimeout(function () { // put the charts back in $.each(charts, function (i, chart) { origParent[i].appendChild(chart.container); }); // restore all body content Highcharts.each(childNodes, function (node, i) { if (node.nodeType === 1) { node.style.display = origDisplay[i]; } }); }, 500); } }); 

exportChart方法接受参数,因此您可以向其发送多个图表。 但是,print方法不接受任何参数。 因此,要打印,您必须单独指定每个图表,如chart1.print(); 和chart2.print(); 它们分别打印出来。

有两种解决方法:

  1. 不使用Highcharts打印打印整页。 这是一个例子

  2. 您可以将两个图表导出为pdf文件,然后在那里打印表单。 以下是如何将多个图表导出为一个pdf的示例。