我正在编写一个应用程序,让用户使用 Raphael.JS 生成图像。我想要的次要功能之一是生成 Raphael 画布的 PNG。
这是我脑海中的一般管道:
- 用户输入参数
- 我们使用 Raphael 调用生成 JS
- 我们生成一个执行上述操作的 JS 包装器,并在包含的 div 上调用 .innerHTML,为我们提供 SVG(然后我们将其发送到某个地方)
- 我们执行 JS 包装器
- SVG 被发送到 ImageMagick 并弹出一个 PNG
第 4 步是我需要一些指导的步骤。用户可能正在使用 IE;我们不能保证 JS 曾经在 SVG 浏览器中执行过。在任何情况下,我们都需要它在服务器端运行以使其可靠。所以这是我到目前为止提出的三种可能性:
- 在服务器上安装 Firefox 并在 Firefox 中运行(3)的结果。这个选项很糟糕,因为安装 FF 意味着在我们的服务器上安装一堆 X 东西,运行 FF 会带来很多开销,而且我真的不想在跟踪进程并在完成后将其杀死。
- 使用 Node.js + jsdom ( http://github.com/tmpvar/jsdom )。这里的缺点是尚不清楚 jsdom 的支持程度——所谓的站点 jsdom.org 并不真正存在。另外,我找不到任何文档。
- 也许和犀牛做点什么?据我所知,Rhino 对 DOM 的支持比 Node.js 还要少。
所以......所有这三个选项都很糟糕。我认为。我错了吗?还有其他方法吗?