2016-04-08 16 views
2

loadSVGfromURLを使用しようとしていますが、問題はありません。ファブリックjsはURLに不足しているプロパティからsvgをロードします

テキストをロードしようとすると、font-family,fillなどのいくつかのプロパティがロードされません。テキストはロードされますが、デフォルトのプロパティー:黒色colorおよびTimes New Roman fontがあります。

fabric.loadSVGFromURL(img.src, function(objects, options) { 
    var tmpobj = fabric.util.groupSVGElements(objects, options); 
    canvas.setDimensions({ 
     width : tmpobj.width, 
     height : tmpobj.height 
    }); 
    //canvas.clear(); 
    canvas.forEachObject(function(obj) { 
     //var obj = new fabric.Object({ padding: 0 }); 
     var obj = objects[i]; 
     if (obj.get('type') == 'text') { 
      var text = new fabric.IText('Tap and Type', { 
       fontFamily : obj.get('fontFamily'), 
       left : obj.get('left'), 
       top : obj.get('top'), 
       text : obj.get('text'), 
       oCoords : obj.get('oCoords'), 
       fontSize : obj.get('fontSize'), 
       height : obj.get('height'), 
       width : obj.get('width'), 
       fill : obj.get('fill') 
      }); 
      obj = text; 
     } 
     obj.padding = 0; 
     obj.setCoords(); 
     canvas.add(obj); 
     canvas.renderAll(); 
    }); 
}) 
+0

あなたでしする

fabric.parseSVGDocument 

機能で

 if (svg.childNodes[i].tagName == "text") { for (var j = 0; j < svg.childNodes[i].childNodes.length; j++) { if (svg.childNodes[i].childNodes[j].tagName == "tspan") { for (var k = 0; k < svg.childNodes[i].childNodes[j].classList.length; k++) { var tmpClassName = svg.childNodes[i].childNodes[j].classList[k]; svg.childNodes[i].classList.add(tmpClassName); } } } } } 

いくつかのライブサンプルを提供しますか? JSFiddle? –

+0

http://jsfiddle.net/1mcxn7um/ – InnokentyDM

+0

ここで私はテストに使用されています。ブラウザで開くと1文字列は他の文字列とは異なる色になりますが、すべての文字列は同じ色になります。https://drive.google.com/file/d/0B-XQpJWb-678STYtVFhtTFY3eWs/view – InnokentyDM

答えて

1

問題がfabricjsでTSPANサポートが欠落しています。

は、ここに私のコードです。

<text x="32" y="40" class="cls-1"><tspan class="cls-2">riev</tspan></text> 
    <text x="158" y="211" class="cls-1"><tspan class="cls-3">0999989878</tspan></text> 
    <text x="96" y="120" class="cls-1"><tspan class="cls-2">Platon</tspan></text> 

tspanのが破棄されるので、情報クラス= "CLS-2" とクラス= "CLS-3" は解析されません。

SVGはこのようになります。

あなたはこのようにSVGを変更することができます。

<text x="32" y="40" class="cls-1 cls-2"><tspan >riev</tspan></text> 
    <text x="158" y="211" class="cls-1 cls-3"><tspan >0999989878</tspan></text> 
    <text x="96" y="120" class="cls-1 cls-2"><tspan >Platon</tspan></text> 

はそれが解析され得るために。

+0

どのようにすべてのsvgを自動的に変更できますか?私はそれを置き換えるために単純なsciptを書くことができますか? – InnokentyDM

0

これを追加しました var svg = doc;以下のための
(; I < svg.childNodes.length; VAR私は= 0私は++){スタイルをテキストに私のtspanのスタイルを追加し

関連する問題