繁体   English   中英

Java代码将网页另存为图像

[英]Java Code to save Web page as image

我有一个使用struts2开发的应用程序。 我的网页之一有一个div,其中显示了使用Google Map API创建的世界地图。 单击按钮后,我想将此地图另存为服务器位置上的图像。 我使用ROBOT类尝试了此操作,但这不起作用。 我的应用程序支持IE8。 以下是我编写的代码:

Dimension screenDim = Toolkit.getDefaultToolkit().getScreenSize();
Rectangle rect = new Rectangle(screenDim);
Robot rob = new Robot();
BufferedImage img = rob.createScreenCapture(rect);
String FileName="D:\\SP_Maps\\Map.png";
ImageIO.write(img, "png", new File(FileName));

基本上,我试图通过单击按钮对页面进行截图,然后将其另存为图像。 这在我的本地主机上运行良好,但是当我在服务器上部署它并尝试获取屏幕快照时,我只是得到了一个保存为png图像的黑页。

在开发Web应用程序时,如果您感兴趣,可以使用javascript。

要获取屏幕截图并将其保存为任何格式,可以使用PhantomJS

PhantomJS is a headless WebKit scriptable with a JavaScript API. It has fast
and native support for various web standards: DOM handling, CSS selector, 
JSON, Canvas, and SVG.

检查那些用PhantomJS编写的示例:

https://github.com/ariya/phantomjs/wiki/示例

另请查看本教程使用PhantomJS拍摄网站截图

本教程是关于拍摄网络快照并将其另存为JPEG,PNG,PDF等的。

希望这对您有帮助...

您可以清楚地说明用例吗? 如果我正确理解您的Web应用程序,该应用程序具有可以根据用户操作进行屏幕截图的功能? 理想情况下,应使用Java Robot实用程序对Java应用程序进行自动化测试。 根据文档

Robot的主要目的是促进Java平台实现的自动化测试。

也许您可以尝试使用phantomjs。

var page = require('webpage').create();
page.open('http://google.com', function () {
    page.render('google.png');
    phantom.exit();
});

https://github.com/ariya/phantomjs/wiki/快速入门

要执行诸如按钮单击之类的用户操作,您可以使用casper.js http://casperjs.org/quickstart.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM