从URL以.aspx结尾的Android下载和打开PDF文件

时间:2017-03-05 00:28:42

标签: android asp.net pdf android-webview pdf-viewer

我可以使用以下代码

下载和查看以* .pdf结尾的网址
public function __construct()
{
    $this->redirectTo = url()->previous();
    $this->middleware('guest', ['except' => 'logout']);
}

但是我试图下载PDF文件,其中url以.aspx结尾,因为它动态生成PDF并且无效。

我还尝试使用google doc url“http://docs.google.com/viewer?url=”+网址嵌入webview,但它也无效。

有人可以提供帮助吗?

1 个答案:

答案 0 :(得分:0)

'。aspx'ASP.NET页面实际上是网络表单。

  

网页表单包含在扩展名为“.aspx”的文件中;这些文件   通常包含静态(X)HTML标记或组件标记。

因此,您要加载的是在服务器端呈现的简单HTML页面。因此,您无法使用它在PDF查看器中查看PDF

不是从文件中打开'.aspx'而是将此网址加载到WebView - 只有在您指向的网站上没有其他安全措施时,这才有效。

如果是Google文档,您提供给WebView的链接应该分享以下链接:

  

https://drive.google.com/file/d/xx-xxxxxxxxxxxxxxx/view?usp=sharing

其中x是散列的一部分。要获取此链接,请点击文档的Share选项,然后点击get shareable link

WebView到达pdf文档之前,它可能会收到一些可能由Android本身处理的重定向。为避免这种情况,您需要覆盖WebViewClient#shouldOverrideUrlLoading,如下例所示:

mWebView.getSettings().setJavaScriptEnabled(true);

mWebView.setWebViewClient(new WebViewClient() {
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return false;
    }
});
mWebView.loadUrl("https://drive.google.com/file/d/xx-xxxxxxxxxxxxxxx/view?usp=sharing");

此外,您可以使用上面提到的可共享网址直接链接到该文件:

change this:
  https://drive.google.com/file/d/xx-xxxxxxxxxxxxxxx/view?usp=sharing
to this:
  https://drive.google.com/uc?export=download&id=xx-xxxxxxxxxxxxxxx
or to this:
  https://docs.google.com/document/d/xx-xxxxxxxxxxxxxxx/export?format=pdf