Sto cercando un modo per caricare una pagina e salvare il rendering come un'immagine proprio come faresti con CutyCapt (QT + webkit EXE per fare proprio questo).JavaFX 2.0+ WebView/WebEngine esegue il rendering di una pagina Web su un'immagine
Al momento e senza JavaFX, lo faccio chiamando un processo esterno da Java e il rendering di file che caricare il file in un ImageBuffer ... Né molto ottimizzato né pratico e piattaforma ancora meno croce ...
Utilizzando JavaFX2 + ho provato a giocare con il WebView & WebEngine:
public class WebComponentTrial extends Application {
private Scene scene;
@Override
public void start(final Stage primaryStage) throws Exception {
primaryStage.setTitle("Web View");
final Browser browser = new Browser();
scene = new Scene(browser, 1180, 800, Color.web("#666970"));
primaryStage.setScene(scene);
scene.getStylesheets().add("webviewsample/BrowserToolbar.css");
primaryStage.show();
}
public static void main(final String[] args) {
launch(args);
}
}
class Browser extends Region {
static { // use system proxy settings when standalone application
// System.setProperty("java.net.useSystemProxies", "true");
}
final WebView browser = new WebView();
final WebEngine webEngine = browser.getEngine();
public Browser() {
getStyleClass().add("browser");
webEngine.load("http://www.google.com/");
getChildren().add(browser);
}
@Override
protected void layoutChildren() {
final double w = getWidth();
final double h = getHeight();
layoutInArea(browser, 0, 0, w, h, 0, HPos.CENTER, VPos.CENTER);
}
@Override
protected double computePrefWidth(final double height) {
return 800;
}
@Override
protected double computePrefHeight(final double width) {
return 600;
}
}
C'è un metodo deprecato: renderToImage
in Scene
(vedi link sotto), che avrebbe fatto qualcosa che si avvicina e con la quale avrei potuto essere in grado lavorare ma è deprecato ... Essere deprecato in JavaFX sembra significare che non c'è javadoc che pubblicizza il metodo di sostituzione e perché non ho accesso al codice, non riesco a vedere come è stato fatto ...
Qui ci sono un paio di siti dove ho trovato un po 'di informazioni, ma niente di rendere una pagina web a un'immagine:
http://tornorbye.blogspot.com/2010/02/how-to-render-javafx-node-into-image.html
canvasImage
e saveImage(canvasImage, fc.getSelectedFile())
da questo:
http://javafx.com/samples/EffectsPlayground/src/Main.fx.html
Altri:
http://download.oracle.com/javafx/2.0/webview/jfxpub-webview.htm
http://download.oracle.com/javafx/2.0/get_started/jfxpub-get_started.htm
http://fxexperience.com/2011/05/maps-in-javafx-2-0/
Io userei 'print' o' printAll' su 'paint', ma l'idea di base è WAY cool! – MadProgrammer
Che cos'è FXBrowser? – Pablo