我想在我的应用程序中打开.pdf文件

时间:2018-02-23 11:40:07

标签: android android-layout android-fragments

我想在Android studio的帮助下在Android应用程序中打开一个文档文件。怎么可能?我应该使用网络视图吗?我曾尝试过许多网站的源代码,但文件是由其他应用程序打开的

1 个答案:

答案 0 :(得分:1)

您可以使用意图打开pdf文件。

File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/example.pdf");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);

如果您不喜欢此方法,并且想在应用程序中打开pdf文件,则可以使用自定义 PDF查看器

gradle文件 编译中:'com.github.barteksc:android-pdf-viewer:2.0.3'

同步项目后,转到xml文件并添加 PDF查看器

<com.github.barteksc.pdfviewer.PDFView android:id="@+id/pdfView"
     android:layout_width="match_parent"
     android:layout_height="match_parent"/>

现在,您将导入 .java 文件:

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import com.github.barteksc.pdfviewer.PDFView;
import com.github.barteksc.pdfviewer.listener.OnLoadCompleteListener;
import com.github.barteksc.pdfviewer.listener.OnPageChangeListener;
import com.github.barteksc.pdfviewer.scroll.DefaultScrollHandle;
import com.shockwave.pdfium.PdfDocument;

import java.util.List;

您将实施两种方法:OnPageChangeListenerOnLoadCompleteListener

主要代码:

        public static final String SAMPLE_FILE = "android_tutorial.pdf"; //your file path
        PDFView pdfView;
        Integer pageNumber = 0;
        String pdfFileName;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        pdfView= (PDFView)findViewById(R.id.pdfView);
        displayFromAsset(SAMPLE_FILE);
    }

    private void displayFromAsset(String assetFileName) {
        pdfFileName = assetFileName;

        pdfView.fromAsset(SAMPLE_FILE)
                .defaultPage(pageNumber)
                .enableSwipe(true) 
                .swipeHorizontal(false)
                .onPageChange(this)
                .enableAnnotationRendering(true)
                .onLoad(this)
                .scrollHandle(new DefaultScrollHandle(this))
                .load();
    }


    @Override
     public void onPageChanged(int page, int pageCount) {
        pageNumber = page;
    }


    @Override
    public void loadComplete(int nbPages) {
        PdfDocument.Meta meta = pdfView.getDocumentMeta();
        printBookmarksTree(pdfView.getTableOfContents(), "-");

    }

    public void printBookmarksTree(List<PdfDocument.Bookmark> tree, String sep) {
        for (PdfDocument.Bookmark b : tree) {
            if (b.hasChildren()) {
                printBookmarksTree(b.getChildren(), sep + "-");
            }
        }
    }

多数民众赞成!

  P.S:首先搜索谷歌,如果你找不到什么,写信给你   问题!