javascript - 用Java截取整个网页

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

最佳答案

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

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

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

关于javascript - 用Java截取整个网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50048981/

相关文章:

javascript - 将对象数组转换为其属性的唯一组合数组

javascript - 将数组作为对象的一部分传递给 Ajax 调用

java - Gdx.input.getY 被翻转

java - 如何在 micronaut-data 中注入(inject)多个数据源的 JPA 存储库?

javascript - 为什么我在检查 null 的长度时没有收到错误

javascript - React JS 单元测试期间 Undefined 不是构造函数

java - 如何使用stripes框架将日期从JSP传递到Java?

html - 如何根据jsp中按下的按钮以表单形式发送数据?

java - 只显示小数点后两位

javascript - 如何在从 jsp 调用的 javascript 函数中传递参数?