简体   繁体   中英

Screenshot of the full web page loaded into JavaFX WebView component, not only visible part

I'm writing my first lines of code after 2 years of managerial work. No time to read a lot of docs, need to create a proof-of-concept just in minutes. So I have to work with JavaFX and need to provide functionality that allows to take a screenshot of web-page loaded into WebView component. The issue is that I need a screenshot of the full page, not only that piece that fits into current size of application window. Here is a simple code I use:

    WritableImage image = browser.snapshot(new SnapshotParameters(), null); 
    // browser is javafx.scene.web.WebView
    File file = new File("screenshot_fx.png");
    try {
        ImageIO.write(SwingFXUtils.fromFXImage(image, null), "png", file);
    } catch (IOException e) {
        e.printStackTrace();
    }

And it basically captures only what I see on the screen. If web-page requires scrolling -- I will not have not-visible part on the screenshot. Please suggest how to proceed.

        try {
            Robot pixelGrabber = new Robot();
            BufferedImage bi = pixelGrabber
                    .createScreenCapture(new Rectangle(x, y, width, height));


            Image screen = SwingFXUtils.toFXImage(bi,
                    new WritableImage(bi.getWidth(), bi.getHeight()));

        } catch (AWTException ex) {
            ex.printStackTrace();
        }

This creates a screenshot starting on pixel x*y with your needed height and width independent of the current size of your application window. If your are using JavaFX, just use SwingFXUtils to transform the awt-image to a JavaFX-image.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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