我正在尝试使用 WebView 呈现 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 文档获得此空白的深灰色背景以及无预览可用的标志
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);
导致没有可用的预览
The solution suggested by the user sphippen worked out. Using the UrlEncoder on the firebase link, The pdf was successfully rendered. Below is the single modification made.
Webviewz.loadUrl(googleDocs+ URLEncoder.encode(firebase_link, "utf-8"));
最佳答案
看起来问题在于您只是附加两个字符串来形成 URL:
Webviewz.loadUrl(googleDocs + pdf_sample);
查看完整的 URL(使用代码示例中的值):
alt=media
后面的&
字符结束url
参数,因此页面尝试访问的URL就是https://firebasestorage.googleapis.com/v0/b/jouska-aabee.appspot.com/o/PDF_files%2F8828?alt=media ,其中不包含下载 token 。
您需要转义 Firebase 存储下载链接以用作 URL 参数(将 &
替换为 %26
、?
与 %3F
、%
与 %25
等)。 URLEncoder类应该有效:
URLEncoder.encode(pdf_sample, "UTF-8")
关于java - 关于渲染PDF和修改Uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40595946/