Why can't my code save my chart as an image? Do I have a mistake somewhere? Although I followed the source (found online), I still can't solve my problem.
I can show the chart but only the problem is cannot save as an image.
<script type="text/javascript" src="js/jsapi.js"></script>
<script type="text/javascript">
function saveAsImg(chartContainer, pngfilename) {
var chartArea = chartContainer.getElementsByTagName('svg')[0].parentNode;
var svg = chartArea.innerHTML;
var doc = chartContainer.ownerDocument;
var canvas = doc.createElement('canvas');
canvas.setAttribute('width', chartArea.offsetWidth);
canvas.setAttribute('height', chartArea.offsetHeight);
canvas.setAttribute(
'style',
'position: absolute; ' +
'top: ' + (-chartArea.offsetHeight * 2) + 'px;' +
'left: ' + (-chartArea.offsetWidth * 2) + 'px;');
doc.body.appendChild(canvas);
canvg(canvas, svg);
var data = canvas.toDataURL("image/png");
canvas.parentNode.removeChild(canvas);
data = data.substr(data.indexOf(',') + 1).toString();
var dataInput = document.createElement("input") ;
dataInput.setAttribute("name", 'imgdata') ;
dataInput.setAttribute("value", data);
var nameInput = document.createElement("input") ;
nameInput.setAttribute("name", 'name') ;
nameInput.setAttribute("value", pngfilename + '.png');
var myForm = document.createElement("form");
myForm.method = 'post';
myForm.action = 'saveme.php';
myForm.appendChild(dataInput);
myForm.appendChild(nameInput);
document.body.appendChild(myForm) ;
myForm.submit() ;
document.body.removeChild(myForm) ;
}
</script>
<script type="text/javascript">
google.load('visualization', '1', {packages: ['corechart']});
</script>
<script type="text/javascript">
function drawVisualizationDaily() {
// Create and populate the data table.
Price1=document.getElementById('Price1').value;
Price2=document.getElementById('Price2').value;
Price3=document.getElementById('Price3').value;
Price4=document.getElementById('Price4').value;
Price5=document.getElementById('Price5').value;
Price6=document.getElementById('Price6').value;
Price7=document.getElementById('Price7').value;
var data = google.visualization.arrayToDataTable([
['Daily', 'Sales'],
['Mon', parseInt(Price1) ],
['Tue', parseInt(Price2) ],
['Wed', parseInt(Price3) ],
['Thu', parseInt(Price4) ],
['Fri', parseInt(Price5) ],
['Sat', parseInt(Price6) ],
['Sun', parseInt(Price7) ]
]);
// Create and draw the visualization.
new google.visualization.ColumnChart(document.getElementById('visualization')).
draw(data,
{title:"Daily Sales",
width:500, height:400,
hAxis: {title: "Daily"}}
);
}
google.setOnLoadCallback(drawVisualizationDaily);
</script>
<div id="visualization" style="width: 600px; height: 400px;"></div>
<script>
<a href='#' onClick="saveAsImg(document.getElementById('visualization'), 'test');">Test</a>
</script>
Our terms of service do not allow you to download the google. charts.
Use google method chart. getImageURI() to get image url then store into the variable after using jquery to submit form. Get HTML data to get images url and store into the images folder, and then retrieve images and content. print into pdf using mpdf.
Google Charts can be printed directly from your browser, or from JavaScript via the print() function. If you want to provide access to a PNG image of a chart, you can use the getImageURI() method. This currently works for core charts and geocharts.
Google Charts provides a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart gallery provides a large number of ready-to-use chart types.
That method is no longer necessary to get an image of the chart. You can call the chart's getImageURI
method instead to get a URL string for generating the image:
var chart = new google.visualization.ColumnChart(document.getElementById('visualization'));
google.visualization.events.addListener(chart, 'ready', function () {
var imgUri = chart.getImageURI();
// do something with the image URI, like:
window.open(imgUri);
});
chart.draw(data, {
title:"Daily Sales",
width:500,
height:400,
hAxis: {title: "Daily"}
});
If you open the image URI, you can right-click the image to save it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With