打开并显示本地存储的pdf文件

时间:2012-04-12 12:06:16

标签: android pdf local-storage file-management

在阅读了几个Q / A后,我仍然无法找到适合我当前问题的答案。

我有一个pdf文件(在编译时已知),它存储在my / res / raw文件夹中。

我尝试使用以下方法加载文件:

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

然后我想在设备上使用首选的pdf-reader显示pdf(在意图中):

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

问题在于意图采用“文件”类型,而我的pdf则被视为“输入流”。

问题是:我如何显示pdf文件?即如何显示InputStream?或者如何存储pdf文件以允许使用新的File()?

打开

2 个答案:

答案 0 :(得分:1)

尝试这个..
    //将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();
                } 

答案 1 :(得分:1)

您可以使用extern库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"/>