在javafx webview中根本不加载PDF

时间:2017-08-14 02:03:05

标签: java javafx pdf.js

此代码的目的是通过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();
               }

            }

        }

2 个答案:

答案 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中。