【问题标题】:Display the pdf file(stored in google drive) in webview by using google docs使用谷歌文档在 webview 中显示 pdf 文件(存储在谷歌驱动器中)
【发布时间】:2016-08-30 07:07:16
【问题描述】:

我的 pdf 文件存储在某个网站例如:http://www.pdf995.com/samples/pdf.pdf

现在我的应用程序无法依赖其他网站。所以

  1. 我已经下载了 pdf 文档
  2. 在谷歌驱动器中上传
  3. 有我自己的 pdf 链接
  4. 尝试使用谷歌文档在webview 中打开它
  5. 失败

现在链接如下

结果,

  • 其他网站可能随时更改其网址。不能依赖它。

  • 如果我单独使用 google drive 链接,那么它会在网络浏览器中打开,而不是在应用程序中。

  • 如果前面有 google 文档,则不会生成 pdf 文档。我得到了这样的东西。

应该怎么做才能使用我自己的 google 驱动器中的 pdf 在 webview 中打开

我关注了CommonsWareStuart SieglerSamir Mangroliya 但没有任何效果。 :(

【问题讨论】:

    标签: android pdf webview google-drive-api google-docs


    【解决方案1】:

    我有一个 WebView,我存储在谷歌驱动器中的 pdf 的链接是:

    String myPdfUrl = "https://drive.google.com/file/d/1fQfqgEmz-AiCpdHEIh7SNwdnAkQFqDQp/view";
    

    不要忘记“/view”。

    还有我用于显示的 java 代码:

    private void displayWebView() {
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                view.loadUrl(myPdfUrl);
                return true;
            }
        });
        webView.loadUrl(myPdfUrl);
    }
    

    并在onCreate()上方添加@SuppressLint("SetJavaScriptEnabled")

    @SuppressLint("SetJavaScriptEnabled")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act
    

    【讨论】:

    • 我们只想在 google drive 中的 pdf 文件的可共享链接之后添加 /view...非常感谢您
    【解决方案2】:

    您可以使用谷歌文档在互联网上查看任何 pdf,甚至无需将其下载到设备上。以下是如何做到这一点的示例:

    webview.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url=" + pdf);
    

    pdf 是指向您的 PDF 文件的字符串链接。所以在你的情况下,它将是:

    String pdf = "http://www.pdf995.com/samples/pdf.pdf";
    webview.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url=" + pdf);
    

    【讨论】:

    • 是的,你是对的@Vlad。但是,我不想依赖其他网站。这就是我选择“Google 云端硬盘”的原因
    • @Prabs,它显示 HTML 代码的原因是链接 drive.google.com/file/d/0B8e4zX5Y1S0XV0U0UTZJOUVma00/view 不再是 PDF。它是从 PDF 构建的 HTML。
    • @Prabs,谷歌驱动器会将任何 PDF 转换为 HTML,所以我认为您必须将其上传到其他地方
    • @Prabs,如果您看到此页面的来源drive.google.com/file/d/0B8e4zX5Y1S0XV0U0UTZJOUVma00/view,您会看到,Google 驱动器将您的 PDF 转换为 HTML,并且此链接不再提供 PDF。
    • @Prabs,我不知道这种方式,因为谷歌驱动器不提供存储文件的直接链接。
    【解决方案3】:

    定义网址,如:

    String BASE_URL = "https://drive.google.com/viewerng/viewer?embedded=true&url=https://drive.google.com/uc?id=";
    String PDF_ID = "<Your pdf id from Google drive share link>";
    

    载入WebView:

    webview.loadUrl(BASE_URL + PDF_ID);
    

    【讨论】:

    • 完美!谢谢
    【解决方案4】:

    首先,您需要遵循“Phúc Nghi Lâm”提供的答案。 (第三个答案。)

    如果它不工作......

    在我的情况下,HTML-result 即将到来。但是你的 WebView 的大小是 0-width 和 0-height。

    因此您需要通过实现“onPageFinished”来重置 LayoutParam。或者别的什么。

    (你应该可以得到WebView的父视图。所以.. 1.获取父视图的大小。2.将大小数据设置为新的LayoutParam。3.将新的LayoutParam设置为Web 视图。)

    【讨论】:

      【解决方案5】:

      我遇到了同样的问题,经过多次打击和试验,我找到了出路。

      您需要点击谷歌驱动器的下载按钮。

      点击后,会打开一个新标签页,其中包含不同的 URL,属于这种类型

      https://drive.google.com/uc?id=0B1dndMpNP4zgdlTuMm5rcjFk3TQ&export=download //测试地址//

      String url="https://drive.google.com/uc?id=0B1dndMpNP4zgdlTuMm5rcjFk3TQ&export=download";
      webView = (WebView) findViewById(R.id.progr);
      webView.getSettings().setJavaScriptEnabled(true);
      webView.getSettings().setLoadWithOverviewMode(true);
      webView.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url="+url);
      

      【讨论】:

      • 会显示还是下载到设备?
      • 它将在 webview 中显示 pdf
      猜你喜欢
      • 2018-07-23
      • 1970-01-01
      • 1970-01-01
      • 2018-09-11
      • 1970-01-01
      • 2018-10-26
      • 2018-09-01
      • 1970-01-01
      • 2019-10-16
      相关资源
      最近更新 更多