Resizing chart for print
Usually browsers use different resolution when printing web pages. If you have charts that are wider than ~600-700 pixels, they will print as cropped.
To overcome this, use the following code to make the charts redraw using new dimensions before the page is printed:
(function() { var beforePrint = function() { for(var i = 0; i < AmCharts.charts.length; i++) { var chart = AmCharts.charts[i]; chart.div.style.width = "700px"; chart.validateNow(); } }; var afterPrint = function() { for(var i = 0; i < AmCharts.charts.length; i++) { var chart = AmCharts.charts[i]; chart.div.style.width = "100%"; chart.validateNow(); } };
if (window.matchMedia) { var mediaQueryList = window.matchMedia('print'); mediaQueryList.addListener(function(mql) { if (mql.matches) { beforePrint(); } else { afterPrint(); } }); }
window.onbeforeprint = beforePrint; window.onafterprint = afterPrint;}());You may also need to add a CSS @media query to resize chart containers for print:
@media print { /* for printing out - assume 8.5x11inches */
#chartdiv { max-height: 612px; max-width: 700px; }}The above will make sure that all amCharts charts on page will be resized on print:
You may need to update the above code according to your needs.
[amcharts2_row class=“info-block”]
Please note, that if you have a CSS transition applied to your chart container (i.e. chartdiv), the above trick will not work for FireFox.
You’ll need to make sure that all CSS transitions are removed in the @media print context.
[/amcharts2_row]
Here’s a working demo.