2014-10-03 63 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();