C'è un modo per salvare l'SVG generato da raphael come un file svg. Nota che è necessario lavorare solo in chrome.Come salvare un file SVG generato da raphael
risposta
Come stef commented, l'API BlobBuilder è obsoleta. Invece, use the Blob API.
Sulla Andreas' answer, ecco come ho subito capito di lavorare:
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();
Mi è venuta una soluzione utilizzando Raphael.Export, che mi fornisce una stringa svg/xml valida (qualcosa che non ho potuto ottenere semplicemente dall'internoHTML dell'oggetto DOM che contiene lo svg) e Blobbuilder per creare un url per un collegamento che attiverò un evento click alla fine per salvare il file.
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();
Sembra che BlobBuilder sia obsoleto. Blob sembra essere la sostituzione ma non ha alcun metodo di aggiunta. – stef
La risposta di Neema ha la soluzione attuale. –
Se non si desidera utilizzare il Rapahel.Export, è possibile ottenere direttamente la svg dal Dom, come quello :
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();
"titolare" è l'id del div in cui è caricato Raphael: r = Raphael ("supporto"); Nota che penso che non funzionerà su vecchi browser che non gestisce svg
Per la parte in cui si salva il blob, io consiglierei di https://github.com/eligrey/FileSaver.js/
o https://www.npmjs.com/package/angular-file-saver se si sta utilizzando AngularJs
- 1. unione immagini da Raphael svg
- 2. Problema durante il salvataggio di un file SVG generato da Raphael JS in una tela
- 3. Raphael JS - Usa un file SVG
- 4. File SVG in Raphael, possono essere utilizzati?
- 5. Utilizzare Raphael per manipolare SVG
- 6. Convertire Raphael SVG in immagine (png ecc) che lato client
- 7. Word Wrap in Raphael JS/SVG
- 8. SVG viewBox zoom in centro (Raphael)
- 9. Come creare un oggetto sfumato con Raphael
- 10. Come posso salvare il codice svg come immagine .svg?
- 11. Come includere un SVG generato dinamicamente nell'interfaccia utente di Vaadin?
- 12. Come salvare un file come UTF-8 da Perl?
- 13. Raphael SVG sposta l'oggetto lungo la linea orizzontale diritta
- 14. Animazione: jQuery o Raphael?
- 15. Ottieni un file SVG come una stringa da JavaScript
- 16. Raphael carta zoom animazione
- 17. raphael trascina e rilascia oggetto da un contenitore ad un altro contenitore
- 18. Come caricare un file SVG che è stato generato con PHP?
- 19. Come scaricare e salvare un file da internet usando Scala?
- 20. Come ottenere il suggerimento del titolo generato da JavaScript per SVG da mostrare
- 21. Scalare più percorsi con raphael
- 22. Come salvare un dizionario in un file?
- 23. Swing & Batik: crea un ImageIcon da un file SVG?
- 24. Come salvare un PNG da JavaScript variabile
- 25. Come salvare un'immagine WPF in un file
- 26. Git: Come salvare un file cancellato manualmente?
- 27. Includi file SVG in SVG
- 28. Salva immagine svg resa da un javascript sul disco locale come file .png
- 29. Salva un grafico di Google come SVG?
- 30. Conversione da svg a jeff
Suppongo che intendi salvare alla fine del client? Ci deve essere un modo migliore di questo, ma nel peggiore dei casi, si può prendere l'XML con JavaScript/jQuery, inviarlo al server tramite AJAX, e poi servirlo all'utente tramite la solita struttura web con le intestazioni appropriate impostate. – halfer
Ah, un altro modo: puoi codificare un file SVG come una stringa base64, quindi aggiungerlo a un collegamento 'data:'. L'utente può fare clic per visualizzarlo e utilizzare 'Salva' nel proprio browser. – halfer