Есть ли способ преобразовать результаты статьи Рафаэля в PNG / SVG в любом браузере (включая старые IE)? - PullRequest
5 голосов
/ 13 января 2012

Я видел много людей, борющихся с этим вопросом, но я не могу найти ни правильного решения, ни того, которое соответствует моим потребностям.

Я делаю некоторые диаграммы с Рафаэлем, и яв основном нужно получить их в формате 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;несмотря на то, что он не будет отображаться браузером, текст должен быть там.

Кто-нибудь знает способ добиться этого?Спасибо!

1 Ответ

1 голос
/ 18 января 2012

Для визуализации SVG вы также можете использовать библиотеку CanVG .
Это SVG синтаксический анализатор и средство визуализации с canvas результирующим выводом.
Затем вы можете просто вывести данные пикселей из canvas в PNG .

Для разрешения ограничений IE вы можете использовать Chrome Frame .

...