0

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

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

经过两天的努力和大量的研发,我得到了一点解决方案,但仍然很少有查询

我已经使用PdfViewer它的一个库在 android 中显示 PDF。下面是我的代码

主要活动

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 页面需要时间,并且没有输出。模拟器截图 在此处输入图像描述

有什么办法可以解决这个问题吗?

谢谢!!

4

2 回答 2

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




}
于 2014-09-08T11:23:00.823 回答
1

这是一个很大的问题。

默认情况下,您应该依赖用户应用程序,只需发送一个意图以检查是否有任何东西可以处理 PDF 文件(例如 Adob​​e reader)。

如果出于某种原因您想在应用程序中呈现 PDF,则有两个主要的库:

于 2014-09-08T10:48:31.787 回答