用Java截取整个网页

时间:2018-04-26 17:36:24

标签: javascript java jsp screenshot dc.js

我正试图弄清楚如何获取整个网页的截图。我正在使用20多个dc.js图表​​在仪表板上工作,交叉过滤所有这些,我正在使用JSP。客户希望有一个用户点击的按钮,它将屏幕截图整个网页。我正在通过java运行它,因为我们必须使用IE11作为我们的标准,并且所有其他js库(如HTML2canvas.js)都不起作用(它不显示dc.js图表​​)尽管它在Chrome上有效但我们必须使用IE11(任何建议都会有所帮助)。

到目前为止,当我点击一个按钮时,它将在JAVA中运行一个主方法来进行屏幕截图。到目前为止,我正在使用java.awt.Robot,但我研究过,它说只有屏幕截图基于主显示器的屏幕。我正在尝试对我的网页进行屏幕截图。有没有办法做到这一点?如果是这样的话?这是我的Java代码。它基于监视器截图...

 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);
        }
    }

1 个答案:

答案 0 :(得分:1)

html2canvas可能符合您的需求:https://html2canvas.hertzen.com/

除此之外,如果你想自己做,想到的是:

  • 首先创建一个svg
  • 一个foreignObject标记
  • 使用XMLSerializer序列化整个html,然后通过innerHTML将其设置为foreignObject。或者使用cloneNode。
  • 在画布上绘制svg
  • 下载画布