简体   繁体   中英

Android Download and Open PDF File from URL ending with .aspx

I am able to download and view from url ending with *.pdf with the below code

 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();
    }
}

but I have tried to download PDF file with url ending with .aspx as its generate PDF dynamically and its not working .

I have also tried to embed with webview with google doc url " http://docs.google.com/viewer?url= "+URL but its also not working.

Can anyone help in this?

'.aspx' Is ASP.NET page that is actually web form.

Web forms are contained in files with a ".aspx" extension; these files typically contain static (X)HTML markup or component markup.

So what you are loading is a simple HTML page rendered on server side. So you cannot use it to view PDF - in PDF viewer.

Instead of openning '.aspx' from file load this url into WebView - this will work only if there are no additional security on the site you are pointing to.

In case of Google Docs the link you are providing to the WebView should be sharing links like following:

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

Where x 's are part of hash. To get this link - click on Share option for the document and then get shareable link .

Before WebView reaches pdf document it could receive few redirects that potentially will be handled by Android itself. To avoid this you need to override WebViewClient#shouldOverrideUrlLoading like in following example:

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");

Also you could get direct link to the file using sharable url you get above:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM