如何在安卓设备上阅读PDF文件

11

我想在安卓设备上阅读一个PDF文件。我已经将PDF文件放置在assets文件夹中。

我该如何从那里读取PDF文件?

PDF阅读器链接

我查看了上面的链接,但它对我没有用。它给出一个错误,说找不到该Activity。

而且我还想在WebView中打开一个PDF文件。那么是否可能在WebView中阅读PDF呢?


为什么它不能工作?你得到了什么错误?请粘贴堆栈跟踪和相关的代码片段。 - Cristian
我不想从另一个应用程序打开应用程序。我想在Webview中阅读PDF文件。 - Nishant Shah
应该关闭,与编程/开发无关。这个问题应该发布在android.stackexchange.com上。 - Chris Conway
如果出现“未找到Activity”的错误,请检查你是否在AndroidManifest.xml文件中列出了你的Activity。 - Felix
5个回答

15

1
据我所了解,PDFBox由于涉及到awt和swing的引用,不支持Android平台。 - Janusz

8

您需要一个支持该MIME类型并能打开它的应用程序。在您的设备/模拟器上,该应用程序未安装,因此会出现错误。


谢谢您的快速回复。 但是,如果我想通过WebView打开PDF文件,我该如何读取该PDF文件呢? - Nishant Shah
你不能通过WebView读取PDF文件。试一试,打开浏览器并搜索一个PDF文件。尝试打开它...你会被提示下载并使用另一个应用程序打开它... - WarrenFaith
是的,你说得对。我发现另一种选择是将PDF页面转换为PNG格式并在Webview中显示它们。 - Nishant Shah

4

另一个很好的解决方案是使用外部安装的应用程序(如Adobe Reader)来阅读PDF文件。

private void openPDF(final String pathToPDF) {
    File file = new File(pathToPDF);
    Uri path = Uri.fromFile(file);
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.setDataAndType(path, "application/pdf");
    try {
        startActivity(intent);
    } catch (ActivityNotFoundException e) {
        Toast.makeText(this, "Application not found", Toast.LENGTH_SHORT).show();
    }
}

我认为你的代码很好。但是,你能告诉我mRealPath是什么吗?我想知道mRealPath的值。 - Shreyash Mahajan
@iDroid 的 mRealPath 是您的 PDF 文件路径,"application_type" 是应用程序。 - user456118
@Azharahmed:你的设备应该安装了“ThinkOffice”。 - user456118
如果我想为PDF阅读器或查看器制作一个单独的应用程序,那么我需要使用哪个库以及如何使用它们? - SilentKiller
你的代码片段是否调用了外部应用程序?如果是,那不是一个好的解决方案。我正在寻找一个真正可以直接读取PDF的代码片段。 - emeraldhieu

0
 private void openPDF(final String path) {
        File file = new File(path);
        Uri uri;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            uri = FileProvider.getUriForFile(context, context.getPackageName() + ".provider", file);
        } else {
            uri = Uri.fromFile(file);
        }

        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.setDataAndType(path, "application/pdf");
        intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        try {
            startActivity(intent);
        } catch (ActivityNotFoundException e) {
            Toast.makeText(this, "Application not found", Toast.LENGTH_SHORT).show();
        }
    }

以上代码使用在Android Manifest中添加的文件提供程序,并使用Android读写权限,以及必须添加<provider>android:grantUriPermissions="true"</provider>,运行良好。 - Satyawan Hajare

0

Google 缓存显示格式如 PDF、PPT、DOCX 等,而且您完全不需要安装任何应用程序。 在 Google 中搜索链接并转到缓存。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接