Managed Printing in Mozilla browsers |
Managed Printing is required only for Flash maps FusionMaps XT provides advanced print management for Flash maps using JavaScript for Mozilla/WebKit/Gecko based browsers like Firefox, Safari, etc. Even though displayed properly on screen, printed output had been not proper in these browsers. So long! FusionCharts JavaScript Class offers a separate Print Manger class to take care of this. The implementation of Print Manager is fairly simple. You just need to add a single line of code in JavaScript which enables Print Manager for all maps present in a web page. Once enabled, all the maps present in a page are prepared to print correctly. Once the maps are ready, which can be tracked by listening to an event raised by the Print Manager, you can use browser's File → Print menu, JavaScript's native window.print() function or Print Manager's advanced function - managedPrint(). In any of these actions, the maps will come-up properly in the print media. The Print Manager internally does the following to achieve this:
Note: Print Manager works only in browsers that supports canvas object. Let's now go through a sample code which will provide you with first-hand experience of what has been said above. Please note that the Print Manager captures the initial view of the map when first loaded. Hence, the run-time changes made in the interactive maps do not get reflected on the printed image. Additionally, changes made to the maps using the setChartAttribute function do not get reflected on the printed image. |
<html> <head> <title>FusionCharts Print Manager</title> <script type="text/javascript" src="Maps/FusionCharts.js"></script> </head> <body> <div id="mapContainer">FusionMaps XT will load here!</div> <script type="text/javascript"><!-- FusionCharts.printManager.enabled(true); var myMap = new FusionCharts( "Maps/FCMap_World.swf", "myMapId", "400", "300", "0", ); myMap.setXMLUrl("Data.xml"); myMap.render("mapContainer"); FusionCharts.addEventListener ( FusionChartsEvents.PrintReadyStateChange , function (identifier, parameter) { if(parameter.ready){ alert("Map is now ready for printing."); document.getElementById('printButton').disabled = false; } }); // --></script> <input type="button" onclick="FusionCharts.printManager.managedPrint()" value="Managed Print" disabled="disabled" id="printButton" > </body> </html> |
In the above code:
Note that the PrintReadyStateChange event is a global event. Thus, this event cannot be listened from individual map instance. Hence, only FusionCharts static class can listen to this event.
Now, if you try printing from File → Print menu or using a button or function that call window.print()function. You can also click the "Managed Print" button to print the map. |
Advanced Functions |
The Print Manger class provides two more functions that helps in advanced configurations. The functions are described below:
To see implementation code snippets using these advanced functions, please go through API Reference > Functions page. Please note that the Print Manager takes a bit of time to prepare all the maps ready for printing. It depends on the size of the map as well as the processing power of the client side computer. If the print action is invoked while the Print Manager is not yet ready with the image, the map does not show up in the print media. However, if the function, managedPrint(), is called, it automatically waits for the all the maps to get ready before it proceeds to call the window.print() function. |