2012-10-23 30 views
1

我在我的页面上有一个svg,我需要导出到一个PNG,所以按照建议here,我使用了canvg。将SVG复制到画布上后神秘的增长

该副本似乎在第一时间正常工作,但随后画布高度开始神秘地增加。

我在做什么明显错误?我试过为画布设置各种尺寸,但没有运气。在IE和Chrome中失败。

这里是我的导出功能:

function copytocanvas() 
{ 
    var c = document.getElementById('canvas'); 
    c.width = $('#svgChart').width(); 
    c.height = c.width; 
    c.getContext = document.getElementById('canvas').getContext; 


    var svg = document.getElementById('svgChart'); // or whatever you call it 
    var serializer = new XMLSerializer(); 
    var str = serializer.serializeToString(svg); 

    canvg(c, str); 
} 

这里是一个的jsfiddle,借以说明问题:http://jsfiddle.net/LkqTU/4772/

这个问题似乎滚动时变得更糟!

+0

看起来像canvg是,出于某种原因,调整画布的大小,无论何时移动鼠标。 'canvg(c,str,{ignoreMouse:true});'停止画布不断调整大小,但画布仍然过大。 – Shmiddty

回答

1

试试这个:

canvg(c, str, {ignoreMouse:true, ignoreDimensions:true});

编辑:

看起来你并不需要ignoreMouse

canvg(c, str, {ignoreDimensions:true});应该做的伎俩。

+0

谢谢 - 现在运作良好 – woggles