2017-08-14 135 views
0

此代碼的目的是通過webview顯示PDF文件。
pdf是在點擊按鈕上閱讀的,但屏幕只是保持白色並永久加載。一旦我點擊按鈕,PDF查看器加載到Web視圖中就沒有錯誤,並且什麼也沒有發生。PDF在javafx中無法加載webview

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

我不知道哪個Java版本你有,但使用JavaFX的WebView中並使用Java 1.8_131和更高pdf.js一個已知的bug:https://bugs.openjdk.java.net/browse/JDK-8180825。這是一個字體問題。

正如bug bug中指出的那樣,Java 9中已經包含了一個修復程序。我只是試了一下,它就可以工作。

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

編輯:修復也已被列入的java 1.8_152。