加载到JavaFX WebView组件中的完整网页的屏幕截图,不仅是可见部分

经过两年的管理工作后,我正在编写我的第一行代码。 没有时间阅读很多文档,需要在几分钟内创建一个概念validation。 因此,我必须使用JavaFX,并且需要提供允许将Web页面加载到WebView组件中的屏幕截图的function。 问题是我需要整页的屏幕截图,而不仅仅是适合当前应用程序窗口大小的那个。 这是我使用的简单代码:

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

它基本上只捕获我在屏幕上看到的内容。 如果网页需要滚动 – 我将不会在屏幕截图上显示不可见的部分。 请建议如何进行。

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

这将创建一个从像素x * y开始的屏幕截图,其中所需的高度和宽度与应用程序窗口的当前大小无关。 如果您使用的是JavaFX,只需使用SwingFXUtils将awt-image转换为JavaFX映像。