如何在Android中阅读和查看PDF?

时间:2014-09-08 10:44:53

标签: android api pdf pdf-reader

我正在开发一个需要在Android应用中打开,阅读和查看pdf 的应用程序。我在assets文件夹中有一个pdf文件。默认情况下,android不支持pdf。

是否有用于打开,阅读和查看pdf文件的API。这些文件位于Assets文件夹中。

经过两天的艰苦努力和大量的研发工作后,我得到了一些解决方案,但仍然存在少量查询

我使用了 PdfViewer 它的库来在android中显示PDF。以下是我的代码

MainActivity

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent intent = new Intent(this, MyPdfViewerActivity.class);
        intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME,
                "mnt/sdcard/sample.pdf");
        startActivity(intent);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}

MyPdfViewerActivity

public class MyPdfViewerActivity extends PdfViewerActivity {

    public int getPreviousPageImageResource() {
        return R.drawable.left_arrow;
    }

    public int getNextPageImageResource() {
        return R.drawable.right_arrow;
    }

    public int getZoomInImageResource() {
        return R.drawable.zoom_in;
    }

    public int getZoomOutImageResource() {
        return R.drawable.zoom_out;
    }

    public int getPdfPasswordLayoutResource() {
        return R.layout.pdf_file_password;
    }

    public int getPdfPageNumberResource() {
        return R.layout.dialog_pagenumber;
    }

    public int getPdfPasswordEditField() {
        return R.id.etPassword;
    }

    public int getPdfPasswordOkButton() {
        return R.id.btOK;
    }

    public int getPdfPasswordExitButton() {
        return R.id.btExit;
    }

    public int getPdfPageNumberEditField() {
        return R.id.pagenum_edit;
    }
}

有查询 加载Pdf页面需要时间,没有输出。模拟器的屏幕截图 enter image description here

有没有解决方法如何解决这个问题?

谢谢!

2 个答案:

答案 0 :(得分:2)

试试android-pdfview库。它运作得很好。

在布局中包含PDFView:

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

加载PDF文件:

public class PDFViewActivity extends Activity implements OnPageChangeListener {

    public static final String SAMPLE_FILE = "sample.pdf";

    public static final String ABOUT_FILE = "about.pdf";


    PDFView pdfView;


    String pdfName = SAMPLE_FILE;


    Integer pageNumber = 1;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        pdfView  =(PDFView)findViewById(R.id.pdfView);

        pdfView.fromAsset(pdfName)
        .defaultPage(1)
        .showMinimap(false)
        .enableSwipe(true)
        .load();



    }    

    @Override
    public void onPageChanged(int page, int pageCount) {
        pageNumber = page;
        setTitle(format("%s %s / %s", pdfName, page, pageCount));
    }




}

答案 1 :(得分:0)

这是一个很大的问题。

默认情况下,您应该依赖用户应用程序,只需发送一个意图来检查是否有任何可以处理PDF文件的内容(例如Adobe Reader)。

如果由于某种原因你想在你的应用程序中呈现PDF,那么有两个主要的库: