如何在服务器端Java中使用像D3.js或Raphaël这样的JavaScript图表库

Luk*_*der 11 javascript java raphael d3.js

我想将D3.js(或者Raphaël)用于使用XSL-FO和Java的后端生成的报告.应该使用这些JavaScript库有以下几个原因:

  1. 它们呈现的图表比我从Java库(IMO)看到的图表更漂亮
  2. 它们支持SVG和PNG(据我所知),这是XSL-FO所需要的
  3. 它们也将用于应用程序的前端部分.使用Java在后端重用它们可以减少开发人员学习曲线和代码库占用空间.

所以使用任何类似的Java库是一个不太有利的选择.

现在,将D3.js与Java一起使用的最直接的方法是使用像selenium这样的繁重工具来呈现虚拟HTML页面并在其中执行JavaScript.但这似乎对我来说太过分了.

有没有更简单的方法可以在同一个Java进程中直接执行这种JavaScript?我问,因为D3.js被设计为在HTML文档的上下文中工作.我不确定是否可以使用Rhino或其他Java脚本实现

Sir*_*rko 3

您可以使用phantom.js。它是一个基于 webkit 的无头浏览器,允许您无需浏览器即可运行 JavaScript。

使用它,您只需执行系统调用即可运行 phantom.js,以获取 JavaScript 代码和输入。然后它会相应地创建您的输出。请参阅此示例