这对我有用。
<script>
(function() {
var beforePrint = function() {
chart = jQuery('#graphArea').highcharts();
chartWidth = chart.chartWidth;
chartHeight = chart.chartHeight;
chart.setSize(670,chartHeight, false);
};
var afterPrint = function() {
chart.setSize(chartWidth,chartHeight, false);
chart.hasUserSize = null; // This makes chart responsive
};
if (window.matchMedia) {
var mediaQueryList = window.matchMedia('print');
mediaQueryList.addListener(function(mql) {
if (mql.matches) {
beforePrint();
} else {
afterPrint();
}
});
}
window.onbeforeprint = beforePrint;
window.onafterprint = afterPrint;
}());
</script>
工作原理:检测“打印前”事件,将图表调整为 670 像素(打印 A4 的可靠宽度),检测“打印后”事件并将图表调整为原始大小。
致谢:TJ VanToll用于检测打印事件功能,此线程上的人员用于 highcharts 调整大小功能以及此答案用于建议 670px。