2015-09-02 17 views
8

svg dosyasını canvas ürününe dönüştürmek için canvg() işlevini kullanıyorum. canvg()'u doğrudan onload üzerinde kullanırsak, svg'u canvas'a dönüştürür. div ile ilgili svg dönüştürmek istedim.Belirli bir div için canvg() işlevi nasıl uygulanır?

Html

<div id="notapply"> 
<svg><text x="50" y="50">Not to Apply!</text></svg> 
</div> 

<div id="apply"> 
<svg width="100" height="100"> 
    <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" /> 
</svg> 
</div> 

Senaryo İşte

canvg(); 

o id=apply yaşıyor div ilgili svg dönüştürmek gerekir.

Fiddle demo here

+0

Soruyu yanıtladıktan sonra soruyu değiştirmeye izin verilmiyor. Bir takip sorusu sormak isterseniz, bunu ayrı bir soru olarak sorun. –

+0

Ben bir [kaynak] kaynağı oldu (http://stackoverflow.com/tags/svg/topusers) Şimdiye kadar :-( –

cevap

2

Sen canvg göndermek istediğiniz SVG seri hale getirmek için XMLSerializer kullanabilirsiniz. Sen sorgusunu değiştirmek gerekir canvg

: belki böyle

şey ...

canvg("canvas", (new XMLSerializer).serializeToString(document.getElementById("apply").firstElementChild));
<script src="https://gabelerner.github.io/canvg/canvg.js"></script> 
 
<div id="notapply"> 
 
<svg><text x="50" y="50">Not to Apply!</text></svg> 
 
    
 
    
 
</div> 
 

 
<div id="apply"> 
 
<svg width="100" height="100"> 
 
    <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" /> 
 
</svg> 
 
</div> 
 
<canvas id="canvas" width="500" height="500"></canvas>

+0

Hızlı yanıt için teşekkürler. Eğer bu div içinde birden fazla svg varsa, bu işe yaramaz. http://jsfiddle.net/L3hondLn/123/ –

+0

Bir döngü içinde bunları serileştirin –

+0

@SrinivasPai http://jsfiddle.net/d8jzkcyf/ –