Есть ли способ сохранить SVG, сгенерированный raphael как svg-файл. Обратите внимание, что нужно работать только в хроме.Как сохранить svg, сгенерированный raphael
ответ
Как stef commented, API BlobBuilder устарел. Вместо этого, 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 (что-то, что я не мог получить от простого из innerHTML объекта DOM, содержащего svg) и Blobbuilder, чтобы создать url для ссылки, в которой я должен запустить событие click в конце, чтобы сохранить файл.
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();
К сожалению, BlobBuilder устарел. Blob представляется заменой, но не имеет метода добавления. – stef
Ответ Neema имеет текущее решение. –
Если вы не хотите использовать 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. Raphael - сохранить атрибуты элемента svg после анимации
- 2. Tricky raphael svg animation
- 3. SVG Путь полукруг (Raphael)
- 4. Инициализация Raphael с элементом svg
- 5. Переход от svg к Raphael
- 6. Создайте этот SVG с Raphael
- 7. Использование Raphael для управления SVG
- 8. Raphael SVG событие похоже Element.dblclick()
- 9. Использование Raphael как сохранить соотношение сторон изображения
- 10. Как манипулировать частями формы с Raphael/svg?
- 11. Как обработать событие mouseover для Raphael SVG
- 12. Растрировать динамически сгенерированный SVG
- 13. Магазин raphael svg в переменной javascript
- 14. Почему jQuery.data() ошибки с путями Raphael svg?
- 15. Использует ли Raphael js холст или svg?
- 16. SVG Raphael jQuery Дорога/путь трейдинга
- 17. Word Wrap в Raphael JS/SVG
- 18. Выполнение SVG-изображения с использованием Raphael
- 19. Вертикально инвертируя форму Raphael SVG не работает
- 20. SVG/Raphael: Все пути через заданную точку?
- 21. Как сохранить сгенерированный код SVG в файл .svg на клиентской машине?
- 22. Raphael - отзывчивый SVG - проблемы с разными браузерами
- 23. Quickinfo для Rectangle SVG Object/Raphael JS
- 24. Raphael JS - Разбор SVG на лету
- 25. Перетаскивание SVG с помощью Raphael JS
- 26. SVG анимация вдоль пути с Raphael
- 27. Raphael загрузка SVG-файла с сервера
- 28. Raphael JS использует образец заполнения SVG
- 29. Рендеринг полигонов SVG в Raphael Библиотека Javascript
- 30. Элемент Raphael SVG переполняется под складкой иногда
Предполагаю, что вы хотите сохранить на стороне клиента? Должен быть лучший способ, чем этот, но в худшем случае, вы можете захватить XML с помощью JavaScript/jQuery, отправить его на сервер через AJAX, а затем передать его пользователю через обычную веб-инфраструктуру с соответствующими наборами заголовков. – halfer
Ах, еще один способ: вы можете кодировать SVG-файл как строку base64, а затем добавить его в ссылку «data:». Пользователь может щелкнуть его, чтобы отобразить, и использовать «Сохранить» в своем браузере. – halfer