谷歌文档查看器显示“无法预览”

9

我在我的Android设备上使用Google文档查看器来打开PDF文件。但是,我打开PDF文件时只显示黑屏和“无法预览”文本。我已经尝试使用谷歌提供的示例PDF文件,它们可以正常工作,但不是我的PDF文件。是否需要从代码方面进行一些设置才能查看我的PDF文件。

http://docs.google.com/viewer?url=myurl.pdf

enter image description here


请问您能否提供一个无法正常工作的PDF链接? - firefoxuser_1
抱歉,我无法分享链接。它类似于 https://xxxx.com/123/test.pdf。 - msg
你解决了这个问题吗?我也遇到了这个问题。 - AndroidLad
1
是的 @ohm。原因是我的PDF文件被托管在带有一些安全限制的服务器上。后来我们允许该托管PDF文件的权限,然后它就正常工作了。 - msg
1
万一其他人碰到了和我一样的问题,我来分享一下。我之所以遇到这个错误,是因为我在文件夹上设置了基本的密码保护,在生产期间使它们私有化。这不允许谷歌获取PDF的访问权限。一旦我取消了文件夹上的密码保护,一切都像预期的那样工作了。 - narco
3个回答

4

我有一个文件显示出了这个问题。将其重命名以去除文件名中的空格,更新我的链接,它就可以工作了。请注意,空格已经正确地HTML编码为%20,因此这个“修复”不应该是必要的。但是,我不能否认成功。祝你好运。


是的,最近似乎发生了变化,不允许在文件名中使用空格和其他编码字符。这非常令人恼火,因为我们一直在大量使用它,现在我们被困在了很多嵌入式 PDF 中,这些 PDF 以前可以正常工作,但现在已经损坏了。有人知道在哪里报告这个错误吗? - Jonatan B
但在我的情况下,URL 中没有空格。我的 URL 如下: /storage/emulated/0/Download/ExamPro/file_exam_pro1666056563400.pdf但它仍然无法正常工作。 - Abdullah Programmer

3

最终解决了这个问题。问题出在URL中。在URL中,我将“%2”替换为“%252”,然后经过1周的努力,终于解决了这个问题。

简而言之,我想对查询字符串进行编码。

if (Url != null && Url.contains("=")) {
    String Urll =Url.substring(Url.lastIndexOf("&Signature=") + 1).replace("%2B", "%252B");
    if (null != Urll && Urll.length() > 0 && Urll.contains("%252B")) {
        int endIndex = Url.lastIndexOf("Signature");
        if (endIndex != -1) {
            Url = Url.substring(0, endIndex);
            Url = Url + Urll;
        }
    }
    Url = Url.replace("?AWSAccessKeyId=", "?AWSAccessKeyId%3D")
            .replace("&Expires=", "%26Expires%3D").replace("&Signature=", "%26Signature%3D");
}

2

尝试像这样编码url

    try {
            encode_url=URLEncoder.encode(url,"UTF-8"); //Url Convert to UTF-8 It important.
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

webView.loadUrl("https://docs.google.com/viewerng/viewer?embedded=true&url="+encode_url);

对我没用…… - Abdullah Programmer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接