【问题标题】:No Preview available when I load without .pdf content webview当我在没有 .pdf 内容 webview 的情况下加载时没有可用的预览
【发布时间】:2020-04-02 04:57:48
【问题描述】:

我尝试在 webview android 中将我的 contant 加载为 PDF,但它显示 No Preview Available 我该如何解决 我的代码在这里:-

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

【问题讨论】:

    标签: java android pdf webview


    【解决方案1】:

    问题显然是这样的:

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

    所以请打电话

    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") 都会产生相同的结果,因为 URL 中没有 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

    【讨论】:

      【解决方案2】:

      我正在使用它并为我工作: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";
      

      【讨论】:

        【解决方案3】:

        我认为是您的 pdf 文件 URL 问题,请检查您的 URLPATH 是否返回像这样的 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);
        
        

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:
              String URLPATH = "http://www.pdf995.com/samples/pdf.pdf";
              String url = "https://docs.google.com/gview?embedded=true&url=" + URLPATH;
              webview.loadUrl(url);
            

            【讨论】:

            • 它再次无法正常工作,显示没有可用的预览
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-04-18
            • 1970-01-01
            • 2019-11-01
            • 1970-01-01
            • 2018-06-01
            相关资源
            最近更新 更多