如何在新活动中正确打开 pdf?

Posted

技术标签:

【中文标题】如何在新活动中正确打开 pdf?【英文标题】:How to properly open a pdf in a new activity? 【发布时间】:2019-02-15 06:14:27 【问题描述】:

我想在另一个活动中查看/打开 PDF 而不触发浏览器或下载 pdf 本身。

目前我正在使用此代码:

String myPdfUrl = "http://example.com/awesome.pdf";
String url = "http://docs.google.com/gview?embedded=true&url=" + myPdfUrl;
Log.i(TAG, "Opening PDF: " + url);
webView.getSettings().setjavascriptEnabled(true); 
webView.loadUrl(url);

但是这似乎并不可靠。有时我的 pdf 已加载,有时则没有。有没有更好的方法来做到这一点?

我正在寻找一个可以打开远程托管 pdf 的库,我得到的最接近的是 https://github.com/voghDev/PdfViewPager,但它仅支持 API 21,而我也需要支持 API 19。此外,这个库似乎只是下载 PDF 并打开它,而不是简单地在 web 视图中显示它。

有什么想法吗?

【问题讨论】:

“有时不是。”这是什么意思? 有时 pdf 没有加载,我看到的只是一个带有空 webview 的空白页面。我测试了 PDF 链接,它不是问题。 您是否尝试过以 URL 格式对 PDF URL 进行编码? URLEncoder.encode(myPdfUrl, "UTF-8") 是的,这就是我目前使用它的方式。 你不在你的例子中。 【参考方案1】:

我想在另一个活动中查看/打开 PDF 而不触发浏览器或下载 pdf 本身

这是不可能的,除非您有一个可以进行 PDF 呈现的网站。

然而这似乎并不可靠

我不相信它是为那样使用而设计的。

有没有更好的方法来做到这一点?

构建您自己的网站,对某些内容(例如图像)进行 PDF 渲染,然后在您的 WebView 中显示该网站。

下载 PDF 会简单得多。

【讨论】:

【参考方案2】:

这个图书馆怎么样?

https://github.com/barteksc/androidPdfViewer

用于显示使用 PdfiumAndroid 呈现的 PDF 的 Android 视图

【讨论】:

在 Android 中下载文件没什么大不了的。您想节省下载大型 pdf 以进行远程渲染的时间和流量吗?换句话说,您是否需要像 Google Docs 为您做的一样,但唯一的问题是它的工作不可靠?【参考方案3】:

我开发了一个基于 Webview 的组件,用于在应用程序中显示 PDF 文件。

You can find it here。希望对你有帮助

【讨论】:

不,你必须下载它 我想避免下载:/ 在谷歌文档中显示 pdf,然后在 webview 中显示,但不是一直有效:/

以上是关于如何在新活动中正确打开 pdf?的主要内容,如果未能解决你的问题,请参考以下文章

如何在新选项卡或窗口中打开 PDF 文件而不是下载它(使用 asp.net)?

使用servlet在新窗口中打开pdf文件

从 GSP 页面中的变量路径名在新窗口中打开 pdf 文件

怎样设置pdf文件的分辨率?

如何从浏览器 Selenium C# 中读取 pdf 内容

iOS PWA 独立:如何强制在新窗口中打开