PDF 根本不会在 javafx webview 中加载

PDF doesn't load at all in javafx webview

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

            }

        }

我不知道你有哪个 Java 版本,但是 JavaFX 和 pdf.js 的 WebView 使用 java 1 有一个已知错误.8_131 及以上:https://bugs.openjdk.java.net/browse/JDK-8180825。是字体问题

正如漏洞单中所指出的,Java9 中包含了一个修复程序。我刚刚试过了,它有效。

Java 9 JDK : http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html

编辑:修复也包含在 java 1.8_152.

Javafx 不是 JDK 11(LTS) 及更高版本的一部分,它可作为单独的独立软件使用。

OpenJavaFX : https://gluonhq.com/products/javafx/

Javafx 13 中包含对 PDF 加载问题的修复。