Я видел много людей, борющихся с этим вопросом, но я не могу найти ни правильного решения, ни того, которое соответствует моим потребностям.
Я делаю некоторые диаграммы с Рафаэлем, и яв основном нужно получить их в формате PNG (для экспорта или последующего использования в формате PDF, и некоторых других вещей).Для Firefox, Chrome, IE 9 и любого другого браузера с поддержкой SVG это просто.На самом деле есть два способа добиться этого: использование canvg для рендеринга SVG в элемент canvas и затем получения данных изображения;или отправка SVG на сервер (C #) и использование библиотеки для его растеризации.
Проблема, конечно, в IE 8 и 7. В этих браузерах Raphael выводит VML, и, очевидно, нет никакого способаполучения источника SVG.Я не смог найти растеризатор VML, поэтому он позволяет мне только одно решение: перевести VML в SVG или перерисовать документ в SVG.
Я проверил библиотеку vectorconvert в PHP, которая на самом деле использует XSLT.преобразования для перевода VML в SVG, но я не смог заставить его работать (я пробовал несколько инструментов для тестирования XSL, но ни один из них не работает).
Я пытался заставить Рафаэля выводить SVG в скрытыйdiv, правильно изменив его свойства .type
, .svg
и .vml
, но это тоже не сработало.
Я думаю, что может быть способ записать дерево SVG в скрытый DIVв то время как в IE;несмотря на то, что он не будет отображаться браузером, текст должен быть там.
Кто-нибудь знает способ добиться этого?Спасибо!