11
votes

Comment utiliser une bibliothèque de graphiques JavaScript comme D3.js ou Raphaël dans le côté serveur Java


6 commentaires

Salut Lukas, avez-vous trouvé une bonne solution pour rendant les tableaux basés sur D3 dans Java Server-Side? J'ai maintenant exactement le même problème, tout rétroaction ou conseil serait vraiment apprécié par moi.


Nope, je n'avais trouvé aucune solution à cela. Mais vous pouvez mettre une prime sur ma question pour attirer plus de lecteurs et éventuellement obtenir une réponse ...


Merci pour les commentaires. Je serais peut-être bien avec des fantômes. Nous verrons.


Avez-vous essayé JavaFX webview?


@ Gáborlipták: Nope pas encore


Voir aussi Stackoverflow.com/Questtions/5677559/...


3 Réponses :


4
votes

Vous pouvez utiliser fantom.js . C'est un navigateur sans tête basé sur WebKit, ce qui vous permet de courir JavaScript sans avoir besoin d'un navigateur.

Utilisation de celui-ci, vous pouvez simplement exécuter un appel système pour exécuter Phantom.js avec pour votre code JavaScript et vos entrées. Il créerait alors votre sortie en conséquence. Voir Cet exemple .


3 commentaires

Ça a l'air gentil (et fou!). L'exemple d'horloge polaire utilisant Raphaël est encourageant.


Hmm, quand j'ai eu un deuxième regard, ce n'est pas une bibliothèque Java / JavaScript. Je ne pourrai pas installer d'autres types de programmes sur le système, malheureusement ...


Je peux confirmer que l'exportation de graphique NVD3 (basée sur la D3) est possible avec Phantomjs. Vous avez besoin développeur.mozilla.org/en- US / DOCS / Web / JavaScript / ... , puisque les fantomjs n'ont pas "BIND", et vous devez attendre avec les exportations de Phantomjs jusqu'à ce que le graphique soit rendu. Je définit simplement une variable dans l'objet de la fenêtre à l'aide d'un rappel de transition ( Stackoverflow.com/a/10692220/337621 ), et À Phantomjs, j'attends que la page.valua indique que la propriété de la fenêtre est définie. Fonctionne comme si cela devrait. Prenez soin du dimensionnement du SVG et de la cliprobie et de la visionnalisation de Phantomjs.



3
votes

J'ai travaillé sur cela il y a environ un an. J'ai réussi à avoir des parties de Highcharts (graphing SVG en JavaScript) travaillant avec Rhino. J'ai dû brancher env-jjs et couru dans de nombreux problèmes concernant l'élément de toile, en particulier autour des calculs de coffres de liaison. Les objets de rhinocéros ne sont pas implémenter getbox (), qui ne peuvent pas être facilement façonnés.

Mon objectif était de le rendre enfin en PDF avec Batik ... Cela a pris trop de temps et nous avons décidé de passer à une autre technologie.

Donc, aujourd'hui, nous utilisons wkhtmltopdf , qui n'est pas Java, mais lequel est une exécutable statique qui peut être intégrée à un pot et lancée facilement de Java. Au fait, XVFB est obligatoire sur Linux si vous voulez rendre quelque chose. C'est assez la même chose que les fantomjs


5 commentaires

Merci pour ces astuces. Oui, si beaucoup de correctifs est nécessaire, alors tout est plus un piratage qu'une solution ...


... Notez qu'avec Selenium (et son HTMLunitDriver), beaucoup de patchs semblent être également nécessaires ...


Htmlunit utilise le moteur de rhinocéros .... Donc, si vous n'utilisez pas le pilote Firefox, vous ne pourrez pas faire ce que vous voulez facilement


J'ai essayé diverses combinaisons. Le pilote Firefox fonctionne, ou les firefox souhaitaient que certains correctifs sérieux semblent fonctionner, comme Htmlunit prolonge en quelque sorte le moteur de rhinocéros


Je n'ai pas mentionné que WKHTMLTOPDF ait un WKHTMLOIMAGE qui serait plus petit à utiliser qu'une installation mondiale de sélénium. En fait, vous devrez augmenter une grille de sélénium si vous voulez ne pas avoir le temps de démarrage de Firefox s'effondrant vos perfs. Les moteurs Qt comme WKHTMLOIMAGE ou PHANTOM.JS sont beaucoup plus réactifs que d'une instance de FF / démarrée continuellement avec sélénium



1
votes

Vous voudrez peut-être consulter ces emballages D3:


0 commentaires