java - 呈现 HTML(w/javascript)并转换为图像

标签 java javascript html

我有一个包含 Javascript 代码的 HTML 页面。它需要先渲染,然后才能转换为图像。

我知道 wkhtmltoimage、PhantomJS、khtmltopng、webkit2png、PrinceXML 和 html2image 等项目。我已经实现了其中的一些,但我正在尝试找到一个不必使用 Process 来执行命令的纯 Java 解决方案。任何帮助都会很棒,谢谢!

编辑:我调查了 Cobra,但似乎 JS 支持仍在开发中,它无法正确解析我的 html 文件。

或者如果还有其他方法可以做到这一点,请告诉我。我只是想找到可能的最佳解决方案。

最佳答案

没有纯 Java 解决方案 - 没有人用 Java 编写过支持 HTML 5 的浏览器。

我会尝试以下任一方法:

  1. 使用env.js + rhino模拟一个可以运行 JavaScript 的浏览器。那应该给你一个 DOM,你可以使用 FlyingSaucer 渲染它。 ,例如。

  2. 将 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/

相关文章:

java - 如何在 JSON 对象中发布此类数据

java - 使用 GridBagLayout 时组件重叠

javascript - 切换类别并向下滑动

html - 如何设置不透明度IE?鼠标悬停问题

java - 如何从其他 Actions 调用 Actions? (如果那是明智的话)

java - 对 Closable 对象正确使用 close() 和 = null

javascript - Ckeditor 4 和 Rails 在同一页面上有 2 个配置不同的 ckeditor

javascript - 垂直对齐动画 div

javascript - 使用 ChromeDev 工具加载 "DOMContentLoaded"之后的 CSS

java - xml 的文档生成器给出错误