我有一个包含 Javascript 代码的 HTML 页面。它需要先渲染,然后才能转换为图像。
我知道 wkhtmltoimage、PhantomJS、khtmltopng、webkit2png、PrinceXML 和 html2image 等项目。我已经实现了其中的一些,但我正在尝试找到一个不必使用 Process 来执行命令的纯 Java 解决方案。任何帮助都会很棒,谢谢!
编辑:我调查了 Cobra,但似乎 JS 支持仍在开发中,它无法正确解析我的 html 文件。
或者如果还有其他方法可以做到这一点,请告诉我。我只是想找到可能的最佳解决方案。
最佳答案
没有纯 Java 解决方案 - 没有人用 Java 编写过支持 HTML 5 的浏览器。
我会尝试以下任一方法:
使用
env.js
+ rhino模拟一个可以运行 JavaScript 的浏览器。那应该给你一个 DOM,你可以使用 FlyingSaucer 渲染它。 ,例如。将 SWT 添加到您的类路径(加上适用于您的平台的二进制文件)。它包含一个
Browser
组件,使用您系统的浏览器访问 render URLs or an HTML string .
您可能需要 SWTBot以 headless 模式运行浏览器。
如果这不起作用并且您使用的是 Linux,则可以启动内存中的 X 服务器 Xvfb
以打开浏览器。或者您可以使用 vncserver
在您的服务器上启动桌面。
[编辑] project phantomjs可能会做你想做的事:
PhantomJS (www.phantomjs.org) is a headless WebKit scriptable with JavaScript or CoffeeScript.
[...]
Use cases: Headless web testing, Site scraping, Page rendering
Multiplatform, available on major operating systems: Windows, Mac OS X, Linux, other Unices
Fast and native implementation of web standards: DOM, CSS, JavaScript, Canvas, SVG. No emulation!
Pure headless (X11) on Linux, ideal for continuous integration systems. Also runs on Amazon EC2.
quickstart page解释如何加载网页并将其呈现为图像。
关于java - 呈现 HTML(w/javascript)并转换为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11107241/