从服务器读取pdf文件

时间:2013-11-24 06:02:23

标签: java android eclipse pdf-generation

我正在尝试开发可以从服务器查看pdf文件的Android应用程序。 我编辑了我的代码。看看吧。

这里是代码:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

                //String LinkToPDF = "http://127.0.0.1/joomla/images/appletter.pdf";
                WebView mWebView=new WebView(MainActivity.this);
                mWebView.getSettings().setJavaScriptEnabled(true);
                mWebView.getSettings().setPluginsEnabled(true);
                mWebView.loadUrl("https://docs.google.com/gview?embedded=true&url=nizam.hostingsiteforfree.com/do‌​c_8.pdf");
                setContentView(mWebView);

            mWebView.setWebViewClient(new WebViewClient() {
                    public boolean shouldOverrideUrlLoading(WebView view, String url) {
                        view.loadUrl(url);
                        return false;
                    }
                });
              }

没有错误。但只要我点击“阅读pdf”按钮

,它就会显示出来

“抱歉,我们无法在原始来源找到该文档。请确认该文档仍然存在。”

请帮我摆脱这个问题。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

从模拟器中引用localhost时,请使用http://10.0.2.2/而不是本地IP 因此,代码中的更改将是

String LinkToPDF = "http://10.0.2.2/joomla/images/appletter.pdf";

此外,这仅适用于模拟器。对于真实设备,您需要真正的服务器。

<强>更新
我测试了你的代码。它只适用于真正的服务器。好像'google docs'无法访问localhost文件。所以,使用真实服务器进行测试。有许多免费托管网站,您可以用它们进行测试。

Joomla不是服务器。 Joomla是content management system (CMS)。你在你的'localhost'中安装了Joomla,它只是模仿服务器,而不是真正的服务器。(免费托管网站之一 - freeHosting)。在真实服务器上注册(现在可以使用免费托管),获取自己的网址,并将pdf上传到那里。如果您需要有关托管的更多详细信息,请随时给我发邮件。

现在,一个重要的部分: - SSL证书。免费托管可能没有有效的SSL。所以,请参考以下内容:

    String LinkToPDF = "http://nizam.hostingsiteforfree.com/doc_8.pdf";
    WebView webview=new WebView(MainActivity.this);
    webview.getSettings().setJavaScriptEnabled(true);

    final Activity activity = this;
    webview.setWebViewClient(new WebViewClient() {
      public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
      }
      @Override
        public void onReceivedSslError(WebView view,
                SslErrorHandler handler, SslError error) {
            Log.d("Nzm", ""+error.getPrimaryError());
             Toast.makeText(activity, "Skipping SSL error", Toast.LENGTH_SHORT).show();
            handler.proceed();
        }
    });

    setContentView(webview);
    webview.loadUrl("https://docs.google.com/gview?embedded=true&url=nizam.hostingsiteforfree.com/doc_8.pdf");