Я пишу приложение, которое позволяет пользователям создавать изображения с помощью Raphael.JS.Одна из второстепенных функций, которую я хочу, - это генерирование PNG холста Рафаэля.
Вот общий конвейер в моей голове:
- Пользовательские параметры ввода
- Мысгенерировать JS с вызовами Рафаэля
- Мы генерируем JS-оболочку, которая выполняет вышеуказанное и вызывает .innerHTML для содержащего div, давая нам SVG (который мы затем отправляем куда-то)
- Мы выполняем JS-оболочку
- SVG отправляется в ImageMagick и выдает PNG
Шаг 4 - это шаг, по которому мне нужно некоторое руководство.Пользователь может использовать IE;у нас нет гарантии, что JS когда-либо будет выполняться в браузере SVG.В любом случае, нам нужно, чтобы он работал на стороне сервера, чтобы он был надежным.Итак, вот три возможности, которые я до сих пор предлагал:
- Установите Firefox на сервере и запустите результат (3) в Firefox.Эта опция - отстой, потому что установка FF означает установку множества X-материалов на наш сервер, запуск FF влечет за собой много накладных расходов, и я действительно не хочу ломать голову, отслеживая процесс и убивая его, как только он будет завершен.
- Используйте Node.js + jsdom (http://github.com/tmpvar/jsdom). Недостатком здесь является то, что неясно, насколько поддерживается jsdom - предполагаемый сайт jsdom.org на самом деле не существует. Кроме того, я не могу найти какую-либо документацию.
- Может, что-то сделать с Rhino? Насколько я могу судить, Rhino имеет еще более скудную поддержку DOM, чем Node.
Итак ... все три из этих опций вродеСосать. Я думаю. Я что-то не так? Есть другой способ?