2016-10-05 1 views
0

Ich kann nicht eine große pdf-Datei (mit 900 Seite) in meine Webview in meiner Android App laden, ich versuche diesen Code und funktioniert gut auf jeder andere pdf, aber wenn ich versuche, einen großen zu öffnen, wird es angezeigt: Keine Vorschau Verfügbar.Wie lade ich große pdf-Datei in Android in meine webview

 wvReport.getSettings().setJavaScriptEnabled(true); 
    wvReport.getSettings().setAllowFileAccess(true); 
    wvReport.getSettings().setAllowContentAccess(true); 

    wvReport.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      return true; 
     } 
     @Override 
     public void onPageFinished(WebView view, String url) { 
      // TODO Auto-generated method stub 
      super.onPageFinished(view, url); 
      Toast.makeText(ReportsViewActivity.this, "Oh no! " , Toast.LENGTH_SHORT).show(); 
     } 

    }); 

    wvReport.setWebChromeClient(new WebChromeClient() { 
     @Override 
     public void onProgressChanged(WebView view, int progress) { 
      if (progress == 100) { 
       progressBar.setVisibility(View.INVISIBLE); 
       progressBar.setProgress(0); 
      } else { 
       progressBar.setVisibility(View.VISIBLE); 
       progressBar.setProgress(progress); 
      } 
     } 

     @Override 
     public void onReceivedTitle(WebView view, String title) { 

     } 
    }); 
    wvReport.loadUrl("http://docs.google.com/viewer?url="+url); 

Antwort

0

Sie nicht. Webviews zeigen HTML an. Die Tatsache, dass dies überhaupt funktioniert, ist durch einen Hack - Google wird einfache PDFs in HTML konvertieren. Es scheint nicht, dass sie etwas so Großes unterstützen. Selbst wenn sie das täten, würde ich erwarten, dass das Laden einer 900-seitigen PDF-Datei, die in HTML konvertiert wurde, so groß wäre, dass ich bezweifle, dass Sie sie laden könnten, ohne OOM zu gehen. Verwenden Sie eine geeignete PDF-Bibliothek, erstellen Sie eine echte PDF-Rendering-Ansicht, und stellen Sie sicher, dass Sie nicht mehr PDFs zu einem Zeitpunkt als nötig rendern (sonst gehen Sie sowieso zu OOM). Mit anderen Worten, verlassen Sie sich nicht auf Hacky-Lösungen, auf die Sie sich nie verlassen sollten.

0

Sie sollten Alternativen wie PDF.js lokal in Ihrem Gerät anstelle eines Dienstes wie Google Docs Vorschau ausprobieren.

Legen Sie es in Ihrem Vermögen Ordner und optimieren Sie das Beispiel:

wv.loadUrl("file:///android_asset/web/viewer.html"); 

Auch als @ gabe-Sechan erwähnt, können Sie Out Of Memory Situationen haben. Eine Alternative zum Versuch ist ein nativer Viewer wie AndroidPdfViewer.

0

Ich versuche, diesen Code: Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(browserIntent);

und es funktioniert, also wenn das pdf zu groß ist, wird heruntergeladen und via pdf viewer

Danke

geöffnet werden
Verwandte Themen