2017-03-09 58 views
1

我使用fabric.js將svg轉換爲canvas,我使用的代碼在Chrome中工作正常,但在IE 11中,創建的畫布越來越多,從而阻止了我從畫布上讀取數據,下面是代碼,我使用使用Fabric Js的Svg到畫布轉換污染畫布

var d3canvas = document.createElement('canvas'); 
    d3canvas.id = canvasId; 

    fabric.loadSVGFromString(svg.node().parentNode.innerHTML, function (objects, options) { 
     var canvasObj = new fabric.Canvas(canvasId); 
     var obj = fabric.util.groupSVGElements(objects, options); 
     canvasObj.add(obj).renderAll(); 

     var canvasdata = d3canvas.toDataURL("image/bmp");//this line causes error as canvas is tainted 
} 

我的問題是,是否有一種方法沒有污點的Fabric.js畫布創建SVG印刷品嗎?

注:我已經使用canvg爲SVG轉換爲畫布,但由於SVG是複雜的沒有得到正確地轉換爲畫布

回答

0

首先取消畫布的所有對象,並使用下面的代碼來畫布轉換爲SVG。

canvas.deactivateAllWithDispatch(); 
canvas.renderAll(); 
var image = canvas.toSVG(); 
var svg_image = "data:image/svg+xml,"+encodeURIComponent(image); 

你會得到SVG圖像值到svg_image變量。