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

Posted

技术标签:

【中文标题】如何在 android 中阅读和查看 PDF?【英文标题】:How can I read and view PDF in android? 【发布时间】:2014-09-08 10:44:52 【问题描述】:

我正在开发一个需要在 android 应用程序中打开、阅读和查看 pdf 的应用程序。我在资产文件夹中有一个 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 页面需要时间,并且没有输出。模拟器截图

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

谢谢!!

【问题讨论】:

查看这些帖子:http://***.com/questions/14289156/pdf-viewer-api-for-androidhttp://***.com/questions/11499942/android-code-to-implement-pdf-viewerhttp://***.com/questions/13344304/android-pdf-reader Display PDF within app on Android? 的可能副本 【参考方案1】:

试试android-pdfview 库。效果很好。

在布局中包含 PDFView:

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

加载 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));
    





【讨论】:

请提供详细答案,因为它看起来不错但不清楚。 是的,我从我的项目中复制粘贴。 pdfView如何使用动画?【参考方案2】:

这真是个问题。

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

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

MUPDF Android PDF Viewer

【讨论】:

以上是关于如何在 android 中阅读和查看 PDF?的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中将离线字典与pdf阅读器集成

Android:如何创建 .doc、.ppt、.xls、.pdf 格式的文档编辑器? [关闭]

如何在 Android 11 Xamarin Forms 中下载和打开 PDF

使用 PDF 库的示例 - Android 上的 libharu?

如何从 Android 中的印地语 PDF 文件中提取文本

PDF文件如何阅读?PDF文件怎么生成?