¿Hay alguna manera de guardar el SVG generado por raphael como archivo svg? Tenga en cuenta que solo necesita trabajar en Chrome.Cómo guardar un svg generado por raphael
Respuesta
Como stef commented, la API de BlobBuilder está obsoleta. En cambio, use the Blob API.
Sobre la base de Andreas' answer, aquí es la rapidez con que lo tengo para trabajar:
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();
Se me ocurrió una solución usando Raphael.Export, lo que me da una cadena svg/xml válida (algo que no pude obtener desde el innerHTML del objeto DOM que contiene el svg) y Blobbuilder para crear un url para un enlace que activaré un evento de clic al final para guardar el archivo.
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();
Lamentablemente parece que BlobBuilder está obsoleto. Blob parece ser el reemplazo, pero no tiene un método de adición. – stef
La respuesta de Neema tiene la solución actual. –
Si no desea utilizar el Rapahel.Export, se puede obtener directamente el SVG desde el dom, al igual que :
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();
"titular" es el id de la div donde se carga Raphael: r = Raphael ("soporte"); Nota que creo que no va a funcionar en el navegador de edad que no maneja SVG
Para la parte donde se guarda la representación de nota, me gustaría recomendar https://github.com/eligrey/FileSaver.js/
o https://www.npmjs.com/package/angular-file-saver si está usando AngularJS
- 1. Problema al guardar como png un SVG generado por Raphael JS en un lienzo
- 2. Raphael JS - Use un archivo SVG
- 3. Use Raphael para manipular SVG
- 4. cómo guardar el contenido generado por DOMPDF en un archivo?
- 5. Recorte de texto en Raphael JS/SVG
- 6. ¿Guardar un gráfico de Google como SVG?
- 7. Archivos SVG en Raphael, ¿se pueden usar?
- 8. SVG viewBox zoom in center (Raphael)
- 9. Cómo crear un objeto degradado con Raphael
- 10. ¿Cómo puedo guardar el código svg como una imagen .svg?
- 11. Convertir Raphael SVG a la imagen (png, etc.) del lado del cliente
- 12. Raphael JS: cómo eliminar eventos?
- 13. Font-face, Raphael e IE8
- 14. Animación: jQuery o Raphael?
- 15. Extraiga el sql generado para crear/guardar un modelo ActiveRecord
- 16. Leyendo un archivo generado por Cobol
- 17. Raphael JS
- 18. Guardar svg imagen representada por un javascript en el disco local como archivo .png
- 19. Escalar varias rutas con raphael
- 20. ¿Cómo guardar el xml generado por Ruby Builder en lugar de renderizarlo en la aplicación Rails?
- 21. Raphael Position
- 22. ¿Cómo puedo guardar el archivo de imagen generado por la etiqueta canvas con heatmap.js?
- 23. ¿Cómo cargo un archivo SVG que se ha generado con PHP?
- 24. ¿Cómo usar eve() en Raphael?
- 25. Java: cómo sangrar XML generado por Transformer
- 26. Cómo guardar un ensamblaje generado dinámicamente que se almacena en la memoria?
- 27. ¿Cómo veo el SQL generado por nHibernate?
- 28. puntero-eventos: ninguna solución Raphael VML
- 29. Menú de pie radial con Raphael JS
- 30. animando caminos con raphael
Supongo que quiere decir guardar al final del cliente? Debe haber una mejor manera que esto, pero en el peor de los casos, puede tomar el XML con JavaScript/jQuery, enviarlo al servidor a través de AJAX y luego entregárselo al usuario a través de su marco web habitual con el conjunto de encabezados adecuado. – halfer
Ah, otra forma: puede codificar un archivo SVG como una cadena base64, luego agregarlo a un enlace 'data:'. El usuario puede hacer clic para mostrar y usar 'Guardar' en su navegador. – halfer