2014-10-03 59 views
0

我试图保存我的画布在SVG(包括文本和SVG)。fabric.js不导出在SVG

我做了一个console.log(画布),所有的对象都在那里。试图导出只有文本,然后只有SVG,仍然无法正常工作。

控制台显示:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 

创造了Fabric.js 1.4.0

// Obtain a canvas drawing surface from fabric.js 
     var canvas = new fabric.Canvas('c'); 
     canvas.setHeight(500); 
     canvas.setWidth(800); 

     canvas.on('object:selected', function(e){ 
      console.log("sdfsdf"); 
     }) 

     // Create a text object. 
     // Does not display it-the canvas doesn't 
     // know about it yet. 
     var hi = new fabric.Text('random text', { 
      fontFamily: "agero", 
      left: canvas.getWidth()/2, 
      top: canvas.getHeight()/2  
     }); 

     var hi2 = new fabric.Text('helo', { 
      fontFamily: "error404", 
      left: 0, 
      top: 0  
     }); 

     // Attach it to the canvas object 


     setTimeout(function() { 
      canvas.add(hi); 
      canvas.add(hi2); 
     }, 500); 


     fabric.loadSVGFromURL('svg/1000.svg', function(objects, options) { 
      var obj = fabric.util.groupSVGElements(objects, options); 


      // ...any code for special handling of the loaded object 


      // put object on the canvas 
      canvas.add(obj); 
     }); 



     console.log(canvas.toSVG()); 

谢谢所有帮助。

回答

0

删除settimeout并直接将对象添加到画布,您将获得画布的svg,并添加对象 或者settimeout对于您来说比在settimeout函数(如Follow)中移动console.log语句所需。您将按照您的要求获得输出。

setTimeout(function() { 
     canvas.add(hi); 
     canvas.add(hi2); 
     console.log(canvas.toSVG()); 
    }, 500); 
0

用你的ID创建一个div,并用Javascript调用它。

document.getElementById('YOUR ID').innerHTML=canvas.toSVG();