如何隐藏SWT浏览器或在无头模式下运行?

时间:2012-06-22 13:38:28

标签: java swt headless-browser

我从SWT浏览器中获取了渲染页面并将其导出到图像中。我的问题是,当shell不可见时,我无法正确导出它。如何隐藏浏览器并正确导出图像?

我尝试将shell.Visible()设置为false,但这会影响图片导出。

这是我导出图像的方式(不确定问题是否必要):

GC source = new GC (shell);  
Image image = new Image(display, browser.getClientArea()); 
source.copyArea(image, 0, 0);
ImageLoader io = new ImageLoader ();
io.data = new ImageData[] { image.getImageData() };
File f = new File (currentDir+"/workpng.png");
io.save (f.getAbsolutePath(), SWT.IMAGE_PNG); 

1 个答案:

答案 0 :(得分:2)

这可能是不可能的,因为当窗口不可见时,X服务器/ Windows将丢弃所有渲染命令(渲染你看不到的东西没有任何意义)。

在这种情况下,浏览器的客户端区域是什么?

为了使其工作,你需要允许shell打开可见(即不被其他窗口隐藏)。像Jenkins这样的工具使用一个插件来启动与XvfbXvnc的X会话。设置env变量DISPLAY后,所有UI呈现都会转到这些会话。