当我在没有 .pdf 内容 webview 的情况下加载时没有可用的预览
Posted
技术标签:
【中文标题】当我在没有 .pdf 内容 webview 的情况下加载时没有可用的预览【英文标题】:No Preview available when I load without .pdf content 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);
【问题讨论】:
【参考方案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);
【讨论】:
它再次无法正常工作,显示没有可用的预览以上是关于当我在没有 .pdf 内容 webview 的情况下加载时没有可用的预览的主要内容,如果未能解决你的问题,请参考以下文章
Android webview没有在按钮点击时生成pdf报告
当我在 WEBVIEW 应用程序中单击网站服务器中的链接时,PDF 未加载