1

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

我有一个 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 被读取为“输入流”。

问题是:如何显示 pdf 文件?即我怎样才能显示一个InputStream?或者如何存储 pdf 文件以允许使用 new File() 打开?

4

2 回答 2

1

TRY this..
//将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();
                } 
于 2012-04-12T12:17:46.453 回答
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"/>
于 2015-10-23T08:11:55.563 回答