在我的应用程序中显示 docx、excel、pdf 文件

Posted

技术标签:

【中文标题】在我的应用程序中显示 docx、excel、pdf 文件【英文标题】:Displaying docx, excel, pdf files within my app 【发布时间】:2019-04-30 01:00:22 【问题描述】:

我有一个 android 应用程序,我想在其中显示来自其各自 URL 的 pdf、excel、docx、txt 格式的文件。我可以使用外部应用程序显示这些文件,但为此,文件首先下载并存储在设备上,然后再显示。我不想下载,我尝试使用 Google 文档查看器在 WebView 中显示文件,但由于文件是私有的,它们不会显示。我尝试过类似以下的方法:-

    mDocumentUrl = mIntent.getStringExtra(Constant.DOCUMENT_URL);

    wvDocumentReader.getSettings().setjavascriptEnabled(true);

    wvDocumentReader.setWebViewClient(new WebViewClient()

                @Override
                public void onPageStarted(WebView view, String url, Bitmap favicon)
                
                    super.onPageStarted(view, url, favicon);
                    wvProgressBar.setVisibility(View.VISIBLE);
                

                @Override
                public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
                
                    view.loadUrl(request.getUrl().toString());
                    return true;
                

                @Override
                public void onPageFinished(WebView view, String url)
                
                    super.onPageFinished(view, url);
                    wvProgressBar.setVisibility(View.GONE);
                
            );
  wvDocumentReader.loadUrl("http://docs.google.com/gview?embedded=true&url="+ mDocumentUrl);

任何人都可以建议一个库或解决方法来实现这一点吗?任何帮助表示赞赏。

【问题讨论】:

当然不能显示私人文件。这不应该工作,这是一件好事! @finki 当然。我们还有一个 ios 应用程序,其中文档链接在 WebView 中打开,但在显示它之前,仅在成功登录时才要求登录,然后显示文档。现在,Android WebView 要求登录,成功登录后,文档将下载到设备。我试图避免下载 How to open/display documents(.pdf, .doc) without external app?的可能重复 @MahendraGohil 我在我的问题中提到了同样的问题,我已经尝试过该问题中给出的答案。但我的文件是私密的,因此无法使用。 【参考方案1】:

我认为您应该使用自定义库来完成这项工作。

见:https://github.com/googlesamples/android-PdfRendererBasic

还有另一种无需调用其他应用程序即可显示 PDF 的方法

这是一种在 android 应用程序中显示 PDF 的方法,该应用程序使用 http://docs.google.com/viewer 的支持将 PDF 文档嵌入到 android webview 中

String doc="<iframe src='http://docs.google.com/viewer?url=+location to your PDF File+' 
          width='100%' height='100%' 
          style='border: none;'></iframe>";

示例如下所示

 String doc="<iframe src='http://docs.google.com/viewer?url=http://www.iasted.org/conferences/formatting/presentations-tips.ppt&embedded=true' 
          width='100%' height='100%' 
          style='border: none;'></iframe>";

代码

WebView  wv = (WebView)findViewById(R.id.webView); 
wv.getSettings().setJavaScriptEnabled(true);
wv.getSettings().setPluginsEnabled(true);
wv.getSettings().setAllowFileAccess(true);
wv.loadUrl(doc);
//wv.loadData( doc, "text/html",  "UTF-8");

并在清单中提供

<uses-permission android:name="android.permission.INTERNET"/>

看到这个:https://***.com/a/43292083/9976418

【讨论】:

感谢您的回复。这是否也显示其他文件格式?

以上是关于在我的应用程序中显示 docx、excel、pdf 文件的主要内容,如果未能解决你的问题,请参考以下文章

Python实现PDF扫描件生成DOCX或EXCEL功能

Java中的Docx到Pdf转换器

如何在 ruby​​ on rails 中显示 Datatable 表格工具(复制、csv、excel、pdf、保存)

PHP - Laravel - 将 Docx 转换为 PDF

使用 Unoconv 将 docx 转换为 pdf 时出错

在我的 android 应用程序中显示 PDF 文件