渲染HTML(使用/ javascript)并转换为图像

时间:2012-06-19 18:37:06

标签: java javascript html

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

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

编辑:我查看了Cobra,但似乎JS支持仍在开发中,并且它不能正确解析我的html文件。

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

2 个答案:

答案 0 :(得分:1)

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

我会尝试其中任何一种方法:

  1. 使用env.js + rhino来模拟可以运行JavaScript的浏览器。这应该为您提供一个DOM,您可以使用FlyingSaucer进行渲染,例如。

  2. 将SWT添加到您的类路径(加上您的平台的二进制文件)。它包含Browser组件,该组件使用您系统的浏览器render URLs or an HTML string

  3. 您可能需要SWTBot才能以无头模式运行浏览器。

    如果这不起作用且你在Linux上,那么你可以启动一个内存中的X服务器Xvfb来打开你的浏览器。或者,您可以使用vncserver在服务器上启动桌面。

    [编辑] project phantomjs可能会做你想做的事:

      

    PhantomJS(www.phantomjs.org)是一款使用JavaScript或CoffeeScript的无头WebKit脚本。
      [...]
      使用案例:无头网络测试,网站抓取,页面渲染
      多平台,可在主要操作系统上使用:Windows,Mac OS X,Linux,其他Unices
      Web标准的快速和原生实现:DOM,CSS,JavaScript,Canvas,SVG。没有效仿!
      Linux上的纯无头(X11),是持续集成系统的理想选择。也可以在Amazon EC2上运行。

    quickstart page解释了如何加载网页并将其渲染为图像。

答案 1 :(得分:1)

我找到了使用WebRenderer的解决方案。 WebRenderer是一种付费解决方案,具有swing,server和desktop版本。自2012年7月9日起,swing版是唯一支持HTML5的版本。但是,swing版本可以在服务器上使用,通过实例化浏览器而不是创建JFrame来转换图像。请参阅this question