У меня есть приложение JavaFx, в котором я пытаюсь загрузить html, который генерирует холст путем выполнения сценариев. Я могу получить сгенерированное изображение холста в пользовательском интерфейсе при запуске приложения, но не могу получить окончательный сгенерированный html контент. Конечный сгенерированный контент HTML содержит текст base64, который я пытаюсь получить. Я вижу этот текст только после того, как я щелкну правой кнопкой мыши на изображении в пользовательском интерфейсе и выберу открыть в новом окне
Ниже приведен код и сгенерированное изображение холста. Может кто-нибудь, пожалуйста, дайте мне знать, как получить сгенерированный HTML контент и получить этот текст Base64 после того, как все сценарии были выполнены здесь?
package com.canvastest;
import java.io.File;
import java.io.OutputStreamWriter;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.concurrent.Worker;
import javafx.concurrent.Worker.State;
import javafx.scene.Scene;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class JavaFxApplication extends Application{
@Override
public void start(Stage primaryStage) throws Exception {
try {
WebView webView = new WebView();
WebEngine webEngine = webView.getEngine();
webEngine.setJavaScriptEnabled(true);
//Bridge bridge = new Bridge(webEngine);
Scene scene = new Scene(webView,600,600);
primaryStage.setScene(scene);
primaryStage.setTitle("Hello World");
primaryStage.show();
File f = new File("D:\\Work\\workspace\\canvastest\\Input\\BhaEditor\\OriginalCanvas.html");
webEngine.getLoadWorker().stateProperty().addListener(
new ChangeListener<State>() {
public void changed(@SuppressWarnings("rawtypes") ObservableValue ov, State oldState, State newState) {
if (newState == Worker.State.SUCCEEDED) {
Document doc = webEngine.getDocument();
try {
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
transformer.transform(new DOMSource(doc),
new StreamResult(new OutputStreamWriter(System.out, "UTF-8")));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
});
webEngine.load(f.toURI().toString());
}catch (Exception ex) {
System.err.print("error " + ex.getMessage());
ex.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}