此代码的目的是通过webview显示pdf文件 按下按钮即可读取pdf,但屏幕仍保持白色并永久加载。单击按钮后,pdf查看器在Web视图中加载时没有错误,没有任何反应。
public class customFXMLController implements Initializable {
@FXML
private TabPane tabPane;
@FXML
private WebView web;
@FXML
private Button btn;
WebEngine engine;
@Override
public void initialize(URL location, ResourceBundle rb) {
engine = web.getEngine();
String url = getClass().getResource("/web/viewer.html").toExternalForm();
engine.setUserStyleSheetLocation(getClass().getResource("/web/viewer.css").toExternalForm());
engine.setJavaScriptEnabled(true);
engine.load(url);
}
public void getWebView() {
startPDF();
tabPane.getSelectionModel().select(1);
}
//this is the button click event
public void startPDF() {
try {
byte[] data = Files.readAllBytes(new File("C:/Users/dan1223/Desktop/TelevisionMan.pdf").toPath());
String base64 = Base64.getEncoder().encodeToString(data);
web.getEngine().executeScript("openFileFromBase64('" + base64 + "')");
} catch (Exception e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:1)
Javafx不是11(LTS)及更高版本的JDK的一部分,它可以作为独立的独立版本提供。
OpenJavaFX:https://gluonhq.com/products/javafx/
Javafx 13中包含针对PDF加载问题的修复程序。
答案 1 :(得分:0)
我不知道你有哪个Java版本,但是JavaFX和pdf.js的WebView使用java 1.8_131及更高版本有一个已知的错误:https://bugs.openjdk.java.net/browse/JDK-8180825。这是一个字体问题。
正如错误故障单中所指出的那样,Java 9中已经包含了一个修复程序。我只是尝试了它,它可以工作。
Java 9 JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html
编辑:修复程序也包含在java 1.8_152中。