安卓下载并从以.aspx结尾的URL打开PDF文件



我能够使用以下代码从以 *.pdf 结尾的 url 下载和查看

private static final int  MEGABYTE = 1024 * 1024;
public static void downloadFile(String fileUrl, File directory){
try {
URL url = new URL(fileUrl);
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
//urlConnection.setRequestMethod("GET");
//urlConnection.setDoOutput(true);
urlConnection.connect();
InputStream inputStream = urlConnection.getInputStream();
FileOutputStream fileOutputStream = new FileOutputStream(directory);
int totalSize = urlConnection.getContentLength();
byte[] buffer = new byte[MEGABYTE];
int bufferLength = 0;
while((bufferLength = inputStream.read(buffer))>0 ){
fileOutputStream.write(buffer, 0, bufferLength);
}
fileOutputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

但是我尝试下载URL以.aspx结尾的PDF文件,因为它会动态生成PDF,并且无法正常工作。

我还尝试使用谷歌文档网址"http://docs.google.com/viewer?url="+URL 嵌入网络视图,但它也不起作用。

谁能帮忙?

'.aspx' 是 ASP.NET 实际上是 Web 表单的页面。

Web 窗体包含在扩展名为".aspx"的文件中;这些文件 通常包含静态 (X)HTML 标记或组件标记。

因此,您正在加载的是在服务器端呈现的一个简单的HTML页面。因此,您不能使用它来查看PDF- 在PDF查看器中。

而不是从文件打开".aspx"将此 url 加载到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");

您也可以使用上面得到的可共享 url 直接链接到该文件:

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

最新更新