在没有 .pdf 内容 webview 的情况下加载时无法预览

No Preview available when I load without .pdf content webview

我尝试在 webview 中将我的内容加载为 PDF android 但它显示无可用预览我该如何解决 我的代码在这里:-

webview = (WebView) findViewById(R.id.webview);
    webview.getSettings().setLoadWithOverviewMode(true);
    webview.getSettings().setUseWideViewPort(true);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.getSettings().setPluginState(WebSettings.PluginState.ON);
    webview.setWebChromeClient(new WebChromeClient());
    String URLPATH = "http://myaccount365.in/public/oddeve78/report/ledger/11/summaryLedger?fromDate=01/11/2019&toDate=09/12/2019";
    String url = "https://docs.google.com/gview?embedded=true&url=" + URLPATH;
    webview.loadUrl(url);
  String URLPATH = "http://www.pdf995.com/samples/pdf.pdf";
  String url = "https://docs.google.com/gview?embedded=true&url=" + URLPATH;
  webview.loadUrl(url);

我正在使用它并为我工作:Check Here

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    WebView webView=new WebView(MainActivity.this);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setPluginState(WebSettings.PluginState.ON);
    //---you need this to prevent the webview from
    // launching another browser when a url
    // redirection occurs---
    webView.setWebViewClient(new Callback());

    String pdfURL = "http://www.expertagent.co.uk/asp/in4glestates/{16D968D6-198E-4E33-88F4-8A85731CE605}/{05c36123-4df0-4d7d-811c-8b6686fdd526}/external.pdf";
    webView.loadUrl(
            "http://docs.google.com/gview?embedded=true&url=" + pdfURL);

    setContentView(webView);
}

private class Callback extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(
            WebView view, String url) {
        return(false);
    }
}

或尝试

我认为确切的问题在于我们用 "http://docs.google.com/gview?url=" 连接的 URL 编码。这意味着我们必须用 unicode 替换 url 的所有特殊字符(:、/、& 等)。 Uri.encode("") 为我们表演一下。

像这样

String url = Uri.encode("your link");
String finalUrl = "http://docs.google.com/viewer?url=" + url + "&embedded=true";

我认为这是您的 pdf 文件 URL 问题,请检查您的 URLPATH 是否 return pdf URL 像这样 https://www.tutorialspoint.com/css/css_tutorial.pdf

我用这个URL它呈现正常

String URLPATH = "https://www.tutorialspoint.com/css/css_tutorial.pdf";
String url = "https://docs.google.com/gview?embedded=true&url=" + URLPATH;
//url:https://docs.google.com/gview?embedded=true&url=https://www.tutorialspoint.com/css/css_tutorial.pdf
webview.loadUrl(url);

我认为您的 URLPATH 是一个动态 url,根据参数,它 return 是一个文件 url。但现在可能 return 不是正确的 url。它可以检查它,或者您将 URLPATH 更改为具有 http://host:port/path/.pdf 的 url 。用它来测试你的代码。

问题显然是这样的:

您有两个 URL - PDF 的 URL 和 google 文档的 URL。由于您想将一个 URL 作为 GET 参数 (?embedded=true&url=) 传递给另一个 URL 和您尝试的 URL要传递 也包含 GET 参数?fromDate=&toDate=,秒 URL 必须是 URL编码.

所以请打电话

String url = "https://docs.google.com/gview?embedded=true&url=" + URLEncoder.encode(URLPATH, "ISO-8859-1");

然后重试。

注意:使用URLEncoder.encode时:你总是会遇到这个问题:你可以调用@Deprecated方法URLEncoder.encode(String s)特定编码或带有 URLEncoder.encode(String s, String enc) 的首选方法,您可以在其中指定编码,但此方法的签名中有 throws UnsupportedEncodingException :-O

无论如何,URLEncoder.encode(url)URLEncoder.encode(url, "UTF-8")URLEncoder.encode(url, "ISO-8859-1") 都会产生相同的结果,因为 [=46] 中没有 UTF-8 或 ISO-8859-1 特定字符=]:

https://docs.google.com/gview?embedded=true&url=http%3A%2F%2Fmyaccount365.in%2Fpublic%2Foddeve78%2Freport%2Fledger%2F11%2FsummaryLedger%3FfromDate%3D01%2F11%2F2019%26toDate%3D09%2F12%2F2019