在我的Web应用程序中,用户可以绘制一些对象。使用d3js(SVG)实现绘图功能(在客户端)。对象的属性(形状,坐标,颜色)在服务器端保存在结构化数据库中。如何在Python Web应用程序(Heroku)的服务器端运行d3js?
现在,我需要在服务器端渲染图纸。我想重用(在服务器端)渲染逻辑在客户端实现。也就是说,要获得SVG(然后将其转换为PNG/PDF),给定数据库中保存的对象属性。
我看到(至少)以下选项:
- 安装在Heroku上的NodeJS为好,从我的Python Web应用程序执行节点。如果我理解的很好,这将需要JSDOM - 参见this;
- 使用ghost.py打开一个本地HTML文件,用于执行实际渲染(使用d3js);
- 将呈现的SVG从客户端发送到后端 - 但这是一个糟糕的选择。
您的建议是?
后来编辑
Ghost.py
是不是一种选择,因为它需要的PyQt或PySide,两者都不可以在Heroku上安装。见this。
PhantomJS
似乎是一个不错的选择。
一些参考
Migrate from jsdom to phantomJS ? (basic DOM creation)
Server-side rendering of visualisations using NodeJS
谢谢,我去** phantomjs **,它工作得很好。 –