如何在 WebView Android Studio 中打开本地 pdf 文件
Posted
技术标签:
【中文标题】如何在 WebView Android Studio 中打开本地 pdf 文件【英文标题】:How to open local pdf file in WebView Android Studio 【发布时间】:2018-08-19 22:27:36 【问题描述】:我知道这个问题已经被问过很多次了,但我仍然无法让它发挥作用。我在原始文件夹中有一个 pdf,我正在尝试使用“https://drive.google.com/viewerng/viewer?embedded=true&url=”在 webview 中打开它以在 webview 中打开它。
我认为我的问题是我无法获得 pdf 文件的正确路径。我已经尝试了三种不同的方式,或者 webview 说我收到错误(url 不存在),或者它“打开”pdf,但是 webview 在中间显示这个文本,“没有可用的预览” .
这是我尝试获取文件路径的三种方式。
-
“android.resource://com.an.example/raw/filename”
"android.resource://" + getPackageName() + "/" + R.raw.filename;
Environment.getExternalStorageDirectory() + "/filename.pdf"
对于方法 1 和 3,我尝试了 "filename" 和 "filename.pdf"
这些都不允许 pdf 在 webview 中加载。下面是我用来加载 pdf 的代码。 (注意:如果我使用 web url 而不是本地文件,此方法确实有效)
webview = (WebView) findViewById(R.id.webView);
webview.getSettings().setjavascriptEnabled(true);
webview.getSettings().setBuiltInZoomControls(true);
String pdf = "one_of_the_above_methods";
webview.loadUrl("https://drive.google.com/viewerng/viewer?embedded=true&url=" + pdf);
我做错了什么?有没有更好的方法在我的应用程序中加载本地 pdf 而不会占用整个活动页面?
【问题讨论】:
【参考方案1】:我在 raw 文件夹中有一个 pdf,我正在尝试使用“https://drive.google.com/viewerng/viewer?embedded=true&url=”在 webview 中打开它以在 webview 中打开它。
这是不可能的。
有没有更好的方法在我的应用程序中加载本地 pdf 而不会占用整个活动页面?
最好的办法是根本不将其加载到您的应用中。通过ACTION_VIEW
使用用户首选的PDF查看应用程序。
除此之外,您还可以在 Android 4.4+ 上使用 PDF.js 的略微修改版本。或者,use AndroidPdfViewer
在更广泛的 Android 版本上,尽管它会使您的 APK 更大。请参阅this blog post 了解有关这些和其他(更差)选项的更多背景信息。
此外,以下是演示示例应用程序:
PDF.js
: https://github.com/commonsguy/cw-omnibus/tree/v8.10/PDF/PdfJS
AndroidPdfViewer
: https://github.com/commonsguy/cw-omnibus/tree/v8.10/PDF/Pdfium
【讨论】:
以上是关于如何在 WebView Android Studio 中打开本地 pdf 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android 的 WebView 中显示 PDF?