【问题标题】:vb.net - Display docx & xlsx files in Webview2 controlvb.net - 在 Webview2 控件中显示 docx 和 xlsx 文件
【发布时间】:2021-08-20 15:14:06
【问题描述】:

我正在开发一个需要文档预览功能的 .net 项目。

我已经实现了一个 Webview2 控件,并且由于需要查看的大多数文档都是 pdf,因此这是一种享受。

但是,有时有些文档可能是 docx 或 xlsx 格式。 当我在这些文件上设置 webview2.Source = New Uri(PathtoFile) 时,webview2 控件会将文档下载到我的下载文件夹而不是呈现它。

我知道这些文件不是 HTML,但又不是 PDF,它们开箱即用。

我是否缺少某种机制,可以让 Webview2 控件显示 docx 和 xlxs 的文件内容而不是下载?

【问题讨论】:

  • PDF 可以正常工作,因为 Microsoft 专门在 Edge 中内置了 PDF 阅读器。 Office 文件没有内置这样的阅读器。 Office 应用程序的 ActiveX 控件可以在 IE 中打开文档,但我认为 Edge 不支持这些控件。如果您无法在 Edge 中打开这些文档,则无法在 WebView2 中打开它们。也许您可以专门为 Office 文档使用WebBrowser 控件,因此将支持 Office ActiveX 控件。一种替代方法可能是在线使用 Office,尽管我不确定它是否支持本地文件。
  • @jmcilhinney 除了 如果您无法在 Edge 中打开这些文档,那么您将无法在 WebView2 中打开它们,所有正确。不必要。 WebView2 使用渲染引擎,但其他实现可能专门适用于 Edge (Chromium)。您也可以通过 PDF 看到差异:不是一回事。 -- 下一步是:Microsoft Edge WebView2 and Microsoft 365 Apps
  • @Jimi,我没有详细阅读该页面,但乍一看,它似乎在谈论 Office 中的 WebView2,而不是 WebView2 中的 Office。它说 Office 365 应用程序使用 WebView2 控件来显示 Web 内容,而不是 WebView2 可用于显示 Office 365 文档。我知道 WebView2 不是 Edge,但它基本上是 Edge 的一个子集,就像 AxWebBrowser 控件是 IE 的一个子集,所以,开箱即用,它不能做 Edge 不能做的事情。也就是说,很可能有一些我没有考虑到的因素,所以我很高兴被证明是错误的。
  • @jmcilhinney 当然,两者都使用 Chromium。但实施很重要。并非一切都浮出水面。 WebView2 控件拥有自己的 Chromium API 实现(位于公共存储库中),Edge 应用程序拥有自己的。 -- 是的,Office (365+) 当然会使用 Chromium 进行集成:IE 已经被淘汰,而旧的 Edge 即将被淘汰。 解释器(作为 Google 的文档视图)需要在 WebBrowers 中呈现 Office 文档。

标签: vb.net xlsx docx preview webview2


【解决方案1】:

我们自己也有同样的问题。目前我们正在使用一个名为 Aspose 的产品,它允许我们将 Word 文档转换为 XPS,之后我们可以在文档查看器中显示该文档。

虽然这可行,而且效果很好,但主要问题是这依赖于我们下载文档,然后对其进行转换,然后将转换后的文档加载到查看器中。由于所有这些工作,这会导致某种“迟缓”的感觉,而图像和 PDF,尤其是当托管在 Web 上时,可以直接托管在 WebView2 中,这样我们的应用程序的其余部分就可以很好地响应用户交互。

所以如果有人提出更好的建议,我会关注这个......

使用 Aspose 的代码非常简单(Visual Basic .NET 中的示例):

Dim oDoc As Aspose.Words.Document = Nothing
oDoc = New Aspose.Words.Document(sFile)
oDoc.Save(fileName:=sToFileName, saveFormat:=Aspose.Words.SaveFormat.Xps)

(省略所有错误处理等,以便专注于实际功能。sToFileName 仅包含沿 [somefolder][yourtargetfilename].xps ... 行的文件名)

【讨论】:

    【解决方案2】:

    我猜你可能会尝试直接通过 Aspose.Words 转换 DOCX to PDF 和通过 Aspose.Cells 转换 XLSX to PDF。这两个 API 都支持呈现为 PDF 甚至图像格式。由于您的查看器支持查看 PDF 或图像,因此您可以尝试这种方法,它可能会满足您的需求。

    PS。我在 Aspose 担任支持开发人员/布道者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 2013-01-16
      • 1970-01-01
      相关资源
      最近更新 更多