Javascript 用Java截图显示整个网页
我想知道如何在整个网页上截图。我正在使用20多个dc.js图表制作一个仪表板,对所有图表进行交叉筛选,并使用JSP。客户端希望有一个按钮,用户点击,它将屏幕截图整个网页。我通过java运行它,因为我们必须使用IE11作为标准,而所有其他js库,如HTML2canvas.js,都不起作用(它不显示dc.js图表),虽然它在Chrome上可以工作,但我们必须使用IE11(任何建议都会有帮助) 到目前为止,当我点击一个按钮时,它将运行JAVA中的一个main方法来进行屏幕截图。到目前为止,我正在使用java.awt.Robot,但我进行了研究,它说它只基于主监视器的屏幕截图。我正在尝试截屏我的网页。有办法吗?如果是,怎么做?下面是我的Java代码。它的屏幕截图基于显示器Javascript 用Java截图显示整个网页,javascript,java,jsp,screenshot,dc.js,Javascript,Java,Jsp,Screenshot,Dc.js,我想知道如何在整个网页上截图。我正在使用20多个dc.js图表制作一个仪表板,对所有图表进行交叉筛选,并使用JSP。客户端希望有一个按钮,用户点击,它将屏幕截图整个网页。我通过java运行它,因为我们必须使用IE11作为标准,而所有其他js库,如HTML2canvas.js,都不起作用(它不显示dc.js图表),虽然它在Chrome上可以工作,但我们必须使用IE11(任何建议都会有帮助) 到目前为止,当我点击一个按钮时,它将运行JAVA中的一个main方法来进行屏幕截图。到目前为止,我正在使用j
package com.customer_inquiry;
import java.net.URL;
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
public class screenshotAction {
public static void main(String[] args) throws Exception {
String outFileName = args[0];
if (!outFileName.toLowerCase().endsWith(".png")) {
System.err.println("Error: output file name must " + "end with \".png\".");
System.exit(1);
}
// determine current screen size
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenSize = toolkit.getScreenSize();
Rectangle screenRect = new Rectangle(screenSize);
// create screen shot
Robot robot = new Robot();
BufferedImage image = robot.createScreenCapture(screenRect);
// save captured image to PNG file
ImageIO.write(image, "png", new File(outFileName));
// give feedback
System.out.println("Saved screen shot (" + image.getWidth() + " x " + image.getHeight() + " pixels) to file \""
+ outFileName + "\".");
// use System.exit if the program hangs after writing the file;
// that's an old bug which got fixed only recently
// System.exit(0);
}
}
有html2canvas可能适合您的需要: 除此之外,如果你想自己做,你会想到:
- 首先创建一个svg
- foreignObject标记
- 使用XMLSerializer序列化整个html,然后通过innerHTML将其设置为foreignObject。或者使用克隆节点
- 在画布上绘制svg
- 下载画布