2012-04-12 12 views
1

Nachdem ich mehrere Q/A durchgelesen habe, kann ich immer noch keine passende Antwort für mein aktuelles Problem finden.Öffne und zeige die lokal gespeicherte PDF-Datei an

Ich habe eine pdf-Datei (bekannt zur Kompilierzeit), die in meinem/res/row-Ordner gespeichert ist.

Ich habe versucht, die Datei zu laden mit:

InputStream is = getResources().openRawResource(R.raw.mypdf); 

Dann mag ich das pdf anzuzeigen (in einer Intent) auf dem Gerät der bevorzugten pdf-Leser mit:

Intent i; 
i = new Intent(Intent.ACTION_VIEW); 
i.setDataAndType(file,"application/pdf"); 
startActivity(i); 

Die Frage ist, dass die Absicht den Typ 'Datei' annimmt, während mein pdf als 'InputStream' gelesen wird.

Die Frage ist: Wie kann ich die pdf-Datei anzeigen? Wie kann ich einen InputStream anzeigen? oder wie kann ich die pdf-Datei speichern, um das Öffnen mit neuer Datei() zu ermöglichen?

+0

Mögliche Duplikat ([Display PDF in App auf Android?] http://stackoverflow.com/questions/2456344/display-pdf-within-app-on-android) –

Antwort

1

diese TRY ..
// Ort pdf nur in Asset-Ordner

Uri file= Uri.parse("file:///android_asset/mypdf.pdf"); 
    String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(file.toString())); 

try{ 
    Intent i; 
    i = new Intent(Intent.ACTION_VIEW); 
    i.setDataAndType(file,mimeType); 
    startActivity(i); 

}catch (ActivityNotFoundException e) { 
        Toast.makeText(this, 
         "No Application Available to fiew this file type", 
         Toast.LENGTH_SHORT).show(); 
       } 
+0

Bitte lassen Sie mich wissen, was passiert .. – vnshetty

+0

Es löst eine ActivityNotFoundException. Außerdem ist der String mimeType leer (mit Toast). Es scheint, dass die Erweiterung nicht erkannt wird. – ThomasKJDK

+0

Okay ... Problem ist, es gibt keine Anwendung in Ihrem Gerät, um eine PDF-Datei zu lesen .. Installieren Sie Adobe Reader und versuchen Sie es erneut ... – vnshetty

1

Sie eine externe Bibliothek nutzen könnten, um zu versuchen joanzapata.pdfview

dieser Code Ihre pdf zeigen wohin u in Ihrem wollen Layout



    private PDFView pdfview; 
    pdfview = (PDFView) findViewById(R.id.pdfview); 
    File file = new File(filepath); 
    pdfview.fromFile(file) 
        .defaultPage(1) 
        .showMinimap(false) 
        .enableSwipe(true) 
        .onLoad(this) 
        .onPageChange(this) 
        .load(); 


oder wenn die Datei wird zum Zeitpunkt der Kompilierung bekannt und u haben die pdf im Asset-Ordner:



    private PDFView pdfview; 
    pdfview = (PDFView) findViewById(R.id.pdfview); 
    pdfview.fromAsset(pdfName) 
        .defaultPage(1) 
        .showMinimap(false) 
        .enableSwipe(true) 
        .onLoad(this) 
        .onPageChange(this) 
        .load(); 


fügen Sie diese in Ihrem Layout

<com.joanzapata.pdfview.PDFView 
       android:id="@+id/pdfview" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"/>