【问题标题】:On rendering PDF and modifying Uri关于渲染 PDF 和修改 Uri
【发布时间】:2017-03-28 12:22:12
【问题描述】:

我正在尝试使用 web 视图呈现 PDF 链接。我尝试呈现的链接由我的应用上传到 firebase 数据库。

当链接在 iOS 设备上成功呈现时。它不在Android上。

我推测所有这些混乱背后的原因是 firebase 链接。

如果我尝试从网络呈现一个普通的 pdf 链接。

String pdf_sample = "http://www.adobe.com/devnet/acrobat/pdfs/pdf_open_parameters.pdf";
    String googleDocs = "https://docs.google.com/viewer?url=";

    Webviewz.getSettings().setJavaScriptEnabled(true);
    Webviewz.loadUrl(googleDocs + pdf_sample);

导致成功的 PDF 渲染

但是,如果我依赖并尝试从我的 Firebase 数据库中显示和呈现 PDF 链接,我会通过 google docs 获得这个空白的深灰色背景和 NO PREVIEW AVAILABLE

的标志
    String Firebase_link_failure = "https://firebasestorage.googleapis.com/v0/b/jouska-aabee.appspot.com/o/PDF_files%2F305?alt=media&token=b9cf2fa6-f6ff-4a3b-8908-9eac294c4668";
    String googleDocs = "https://docs.google.com/viewer?url=";

    Webviewz.getSettings().setJavaScriptEnabled(true);
    Webviewz.loadUrl(googleDocs + Firebase_link_failure);

导致没有可用的预览

用户 sphippen 建议的解决方案成功了。在 firebase 链接上使用 UrlEncoder,成功呈现了 pdf。以下是所做的单个修改。

Webviewz.loadUrl(googleDocs+ URLEncoder.encode(firebase_link, "utf-8"));

【问题讨论】:

  • 当我尝试使用该链接时,它会报告 The specified key does not exist. 所以我不明白您为什么希望应用程序的行为有所不同?另外,您在哪里按照the docs 的指示致电storageRef.child("...").getDownloadUrl()
  • 这主要是因为我之前删除了链接,对不起。

标签: java android-studio pdf firebase firebase-storage


【解决方案1】:

看起来问题在于您只是附加两个字符串来形成您的 URL:

Webviewz.loadUrl(googleDocs + pdf_sample);

查看完整 URL(使用代码示例中的值):

https://docs.google.com/viewer?url=https://firebasestorage.googleapis.com/v0/b/jouska-aabee.appspot.com/o/PDF_files%2F8828?alt=media&token=fab355da-47a6-4a27-894f-40798590a89a

alt=media 后面的& 字符结束了url 参数,因此页面尝试访问的URL 只是https://firebasestorage.googleapis.com/v0/b/jouska-aabee.appspot.com/o/PDF_files%2F8828?alt=media,它不包含下载令牌。

您需要转义 Firebase 存储下载链接以用作 URL 参数(将 & 替换为 %26? 替换为 %3F% 替换为 @ 987654333@等)。 URLEncoder 类应该可以工作:

URLEncoder.encode(pdf_sample, "UTF-8")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 2016-06-22
    • 2011-10-28
    • 2014-09-02
    • 2011-09-29
    相关资源
    最近更新 更多