2017-11-16 5 views
0

私はwebviewでウェブサイトを開き、javascript関数を実行するjavafxアプリケーションを持っています。このjs関数では、私はPDFファイルを取得するXMLHttpRequestリクエストを作成し、私はJavaに戻そうとしています。 pdfはバイナリで、レスポンスはUTF-8テキストに変換されるため、問題はエンコーディングにあります。私の機能は次のようになります:javafx webview javascript XMLHttpRequestレスポンスタイプarraybuffer

webEngine.executeScript(
    "function xhrDownload() {"     
    + "var req = new XMLHttpRequest();"   
    + "req.onload = function() {" 
    + "if (req.readyState === req.DONE && req.status == 200) {"   
    + "java.sendData(req.responseText);"    
    + "}" 
    + "};" 
    + "req.open(\"GET\", \"https://xxxx/test.pdf\", false);"    
    + "req.send();" 
    + "}xhrDownload();" 

);

私はresponseType ='arraybuffer'を設定しようとしましたが、私はこのエラーを取得:

Exception in thread "JavaFX Application Thread" netscape.javascript.JSException: InvalidAccessError (DOM Exception 15): The object does not support the operation or argument. 
at com.sun.webkit.dom.JSObject.fwkMakeException(JSObject.java:156) 
at com.sun.webkit.WebPage.twkExecuteScript(Native Method) 
at com.sun.webkit.WebPage.executeScript(WebPage.java:1509) 
at javafx.scene.web.WebEngine.executeScript(WebEngine.java:1005) 
at main.xhrDownload(main.java:77) 
at main.lambda$0(main.java:54) 
at com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:182) 
at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:81) 
at javafx.beans.property.ReadOnlyObjectPropertyBase.fireValueChangedEvent(ReadOnlyObjectPropertyBase.java:74) 
at javafx.beans.property.ReadOnlyObjectWrapper.fireValueChangedEvent(ReadOnlyObjectWrapper.java:102) 
at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:112) 
at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:146) 
at javafx.scene.web.WebEngine$LoadWorker.updateState(WebEngine.java:1287) 
at javafx.scene.web.WebEngine$LoadWorker.dispatchLoadEvent(WebEngine.java:1398) 
at javafx.scene.web.WebEngine$LoadWorker.access$1200(WebEngine.java:1280) 
at javafx.scene.web.WebEngine$PageLoadListener.dispatchLoadEvent(WebEngine.java:1267) 
at com.sun.webkit.WebPage.fireLoadEvent(WebPage.java:2499) 
at com.sun.webkit.WebPage.fwkFireLoadEvent(WebPage.java:2343) 
at com.sun.webkit.network.URLLoader.twkDidFinishLoading(Native Method) 
at com.sun.webkit.network.URLLoader.notifyDidFinishLoading(URLLoader.java:859) 
at com.sun.webkit.network.URLLoader.lambda$didFinishLoading$103(URLLoader.java:850) 
at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295) 
at java.security.AccessController.doPrivileged(Native Method) 
at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294) 
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177) 
at java.lang.Thread.run(Unknown Source) 

このアプリケーションの主な目的は、このpdfファイルをダウンロードすることです。しかし、私はこのファイルはあなたがウェブサイトにログインした後にのみ利用可能であるため、javaからファイルurlにリクエストすることはできません。任意の助けを事前に

ありがとう:D

答えて

0

私は別の方法を試してみましたので、私は私の問題への解決策を見つけることができませんでした。私はPDFjsライブラリの助けを借りてWebViewの中のpdfを開いて、そのスナップショットを撮ります。少なくとも私は今、ファイルのイメージを持っています。

関連する問題