2012-04-12 5 views
1

После прочтения нескольких вопросов/ответов я по-прежнему не могу найти подходящий ответ для моей текущей проблемы.Открыть и отобразить pdf-файл, хранящийся локально

У меня есть pdf-файл (известный во время компиляции), который хранится в папке/res/raw.

Я попытался загрузки файла с помощью:

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

Тогда я хочу, чтобы отобразить PDF (намерения) с использованием предпочтительного PDF-ридер на устройстве:

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

Этот вопрос заключается в том, что намерение принимает тип «Файл», в то время как мой pdf-файл читается как «InputStream».

Вопрос: Как я могу отобразить pdf-файл? то есть как я могу отобразить InputStream? или как я могу сохранить pdf-файл, чтобы разрешить открытие с помощью нового File()?

+0

Возможный дубликат ([Display PDF в приложение на Android?] http://stackoverflow.com/questions/2456344/display-pdf-within-app-on-android) –

ответ

1

TRY это ..
// место PDF в папке активов, просто чтобы попробовать

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

PLS позвольте мне знать, что происходит .. – vnshetty

+0

Он выдает исключение ActivityNotFoundException. Кроме того, тип mimeType String пуст (с использованием Toast). Похоже, что расширение не распознается. – ThomasKJDK

+0

Хорошо ... Проблема в том, что на вашем устройстве нет приложения для чтения pdf-файла. Установите Adobe Reader и попробуйте еще раз ... – vnshetty

1

можно использовать экстерн библиотеку joanzapata.pdfview

этот код будет показывать PDF везде, где и хочет в вашем макет



    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(); 


или если Файл известен во время компиляции и у есть PDF в папке активов:



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


добавить это в макете

<com.joanzapata.pdfview.PDFView 
       android:id="@+id/pdfview" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"/> 
Смежные вопросы