Скриншот всей веб-страницы на Java - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь понять, как сделать скриншот всей веб-страницы. Я работаю над приборной панелью, используя 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 голосов
/ 26 апреля 2018

Существует html2canvas, который может удовлетворить ваши потребности: https://html2canvas.hertzen.com/

Кроме того, если вы хотите сделать это самостоятельно, то вам на ум приходит:

  • сначала создайте svg
  • тег постороннего объекта
  • сериализует весь html с использованием XMLSerializer, а затем устанавливает его в foreignObject через innerHTML. В качестве альтернативы используйте cloneNode.
  • нарисовать SVG на холсте
  • скачать холст
...