2013-10-21 46 views
0

我正在动态创建分析的PDF文档。图表等是使用Google Graph API创建的。所以我正在做的是将图形变成图像,然后将它们加载到网页中,然后使用mpdf(http://www.mpdf1.com/mpdf/index.php)库将其转换为PDF。将GoogleGraph另存为矢量图像

这是教程,我followng:http://www.battlehorse.net/page/topics/charts/save_google_charts_as_image.html和我已经纠正代码:

function getImgData(chartContainer) { 
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 imgData = canvas.toDataURL("image/png"); 
canvas.parentNode.removeChild(canvas); 
return imgData; 
} 

基于本主题中的建议:Save Google charts as a image

但是,输出的图像是PNG格式,我需要它是SVG,我想这可能只是改变这一行的情况:

var imgData = canvas.toDataURL("image/png"); 

到:

var imgData = canvas.toDataURL("image/svg"); 

但是这不是工作,任何人都可以请指点我在正确的方向吗?或者如果有更好更自由的方式将Google图表转换为PDF,我会很乐意探索其他选项。

回答

2

我会认为var“svg”包含SVG。你不需要转换它。所以:

function getSvgData(chartContainer) { 
var chartArea = chartContainer.getElementsByTagName('svg')[0].parentNode; 
var svg = chartArea.innerHTML; 
return svg; 
}