द्वारा उत्पन्न एक एसवीजी को कैसे सहेजने के लिए रैफेल द्वारा एसवीजी फ़ाइल के रूप में उत्पन्न एसवीजी को सहेजने का कोई तरीका है। ध्यान दें कि इसे केवल क्रोम में काम करने की आवश्यकता है।रैफेल
रैफेल
उत्तर
stef commented के रूप में, ब्लॉबबिल्डर एपीआई बहिष्कृत है। इसके बजाए, use the Blob API।
बिल्डिंग Andreas' answer पर, यहाँ है कि कैसे मैं जल्दी से काम करने के लिए मिल गया:
svgString = r.toSVG();
a = document.createElement('a');
a.download = 'mySvg.svg';
a.type = 'image/svg+xml';
blob = new Blob([svgString], {"type": "image/svg+xml"});
a.href = (window.URL || webkitURL).createObjectURL(blob);
a.click();
मैं Raphael.Export का उपयोग करके एक समाधान के साथ आया, जो मुझे एक वैध svg/xml स्ट्रिंग (कुछ ऐसा जो मुझे डीओएम ऑब्जेक्ट के आंतरिक HTML से प्राप्त नहीं कर सका जो svg रखता है) और ब्लोबबिल्डर बनाने के लिए एक लिंक के लिए यूआरएल जो फ़ाइल को सहेजने के अंत में एक क्लिक ईवेंट को फायर करेगा।
svgString = @paper.toSVG();
a = document.createElement('a');
a.download = 'mySvg.svg';
a.type = 'image/svg+xml';
bb = new(window.BlobBuilder || WebKitBlobBuilder);
bb.append(svgString);
blob = bb.getBlob('image/svg+xml');
a.href = (window.URL || webkitURL).createObjectURL(blob);
a.click();
दुर्भाग्य से ब्लॉबबिल्डर की तरह अप्रचलित दिखता है। ब्लॉब प्रतिस्थापन प्रतीत होता है लेकिन इसमें कोई संलग्न विधि नहीं है। – stef
नीमा के जवाब में वर्तमान समाधान है। –
आप Rapahel.Export का उपयोग नहीं करना चाहते, तो आप सीधे, डोम से svg प्राप्त कर सकते हैं उस तरह :
var svgString = document.getElementById('holder').innerHTML;
a = document.createElement('a');
a.download = 'mySvg.svg';
a.type = 'image/svg+xml';
blob = new Blob([svgString], {"type": "image/svg+xml"});
a.href = (window.URL || webkitURL).createObjectURL(blob);
a.click();
"धारक" div जहां भरी हुई है की आईडी है राफेल: आर = राफेल ("धारक"); नोट मुझे लगता है कि यह पुराने ब्राउज़र कि svg
प्रबंधन नहीं करती है हिस्सा है जहाँ आप ब्लॉब को बचाने के लिए पर काम नहीं करेगा, मैं https://github.com/eligrey/FileSaver.js/
या https://www.npmjs.com/package/angular-file-saver आप AngularJS
उपयोग कर रहे हैं की सलाह देते हैं- 1. रैफेल
- 2. रैफेल
- 3. रैफेल जेएस द्वारा कैनवास
- 4. रैफेल सेट कैसे स्थानांतरित करें?
- 5. रैफेल कैनवास या एसवीजी का उपयोग कर रहा है?
- 6. backbone.js और raphäel.js/बैकबोन देखें <-> राफेल ऑब्जेक्ट
- 7. रैफेलजेस जावास्क्रिप्ट ग्राफिकल लाइब्रेरी
- 8. राफेल जेएस का आकार बदलना कैनवास
- 9. इंटरैक्टिव ग्राफ के निर्माण और लेआउट के लिए जावास्क्रिप्ट फ्रेमवर्क (एक तीर नोड्स)
- 10. राफेल जेएस टेक्स्ट पोजिशनिंग: सर्कल में पाठ केंद्रित करना
- 11. कॉफी स्क्रिप्ट वर्ग संदर्भ और घटना संदर्भ
- 12. सीएमके में उद्धरण से बचें add_custom_command
- 13. event.layerX और event.layerY
मुझे लगता है कि आप क्लाइंट एंड पर सहेजने का मतलब है? इसके मुकाबले बेहतर तरीका होना चाहिए, लेकिन सबसे खराब स्थिति परिदृश्य, आप एक्सएमएल/jQuery के साथ एक्सएमएल को पकड़ सकते हैं, इसे AJAX के माध्यम से सर्वर पर भेज सकते हैं, और उसके बाद उचित हेडर सेट के साथ अपने सामान्य वेब ढांचे के माध्यम से उपयोगकर्ता को इसकी सेवा कर सकते हैं। – halfer
आह, एक और तरीका: आप एक एसवीजी फ़ाइल को बेस 64 स्ट्रिंग के रूप में एन्कोड कर सकते हैं, फिर इसे 'डेटा:' लिंक में जोड़ें। उपयोगकर्ता इसे प्रदर्शित करने के लिए क्लिक कर सकते हैं, और अपने ब्राउज़र में 'सहेजें' का उपयोग कर सकते हैं। – halfer