【问题标题】:Opening an instance of Microsoft Word from Javascript从 Javascript 打开 Microsoft Word 实例
【发布时间】:2016-01-04 19:32:40
【问题描述】:

我正在构建一个允许用户通过网页打开 Word 文档的应用程序。此 Web 应用程序将使用机器上的本地 word 实例打开 word 文档。

我有两个可行的解决方案。

  1. 使用 ActiveX(仅在 IE 上)
  2. 由于应用是内网应用,我在web服务中使用PsTools在远程机器上远程打开word实例。

第二种架构是我现在所遵循的。它基于通过 Javascript/jquery 调用接收机器名称的 Web 服务。稍后在 web 方法中,我使用 PsTools 在远程机器上远程执行 MS Word 实例。

两种架构都有效,但都有局限性。有了 ActiveX,我可以在 IE 上使用它,它还需要更改网络策略以允许 ActiveX。使用 PsTools,它运行良好,但我无法获得 Word.Exe 的路径,我只能假设它始终位于 \\machinename\C$\Program Files(x86)\....

我们也可能将此应用程序公开,在这种情况下,我们使用 PsTools 的解决方案将不再有效。

我只是想知道是否有其他更适合/跨浏览器的方式通过 Web 应用程序打开本地单词实例?

文档必须在远程位置修改,一种选择是让用户下载文档,然后修改并上传到服务器,这是没有问题的,因为我们正在替换厚客户并希望保持相同的用户体验

【问题讨论】:

  • 你不能只提供一个下载Word文件的链接吗?大多数机器将被配置为在下载时自动打开 Word 文档。
  • @Jaco,我确实错过了在问题中提到的内容,该文档位于远程驱动器上,必须在那里进行修改。因此,下载它然后修改然后再次上传对于用户来说会很复杂,我们不能这样做。
  • 为什么不提供指向共享驱动器上文档的链接?此外,您不能依赖拥有 MS Office 副本的每个人。使用它作为应用程序的一部分的依赖项是一个非常糟糕的主意 - 特别是因为您提到您可能会将其公开。
  • 必须在 Word 中完成吗?例如,与谷歌文档相比,这不是一种非常适合网络的方法
  • 一个会自动打开word并加载一些随机文件的网站?!?似乎是一个等待发生的安全问题。

标签: javascript c# jquery


【解决方案1】:

我正在构建一个允许用户打开单词的应用程序 通过网页记录。

如果是 Intranet 方案,那么您可以使用带有 Office URI 方案的应用程序协议来链接到将在本地安装的客户端中打开的文档。

Office URI 架构如下:

<scheme-name>:<command-name>"|"<command-argument-descriptor> "|"<command-argument>

对于 Word,具体示例如下:

<a href='ms-word:ofe|u|https://example.com/example.docx'>Edit</a>

其中,ms-word: 是方案,ofe 命令代表 open-for-editu使用 URI 的命令描述符 接下来,最后是文档本身的 URI。还有其他命令,例如 ofv (open-for-view) 和 nft (new-from-template),还有其他命令描述符,例如 @ 987654332@ 保存

这里是完整的参考:https://msdn.microsoft.com/en-us/library/office/dn906146.aspx

在安装 Office 客户端时向 Windows 注册协议。

您可以在 IIS 服务器上轻松启用 WebDAV。 WebDAV 客户端内置在客户端的 Windows 中。

您还可以使用 FFWinPlugin Plug-in 等组件,它是 SharePoint Foundation 的一部分,或者 OpenDocuments Control 是随 Office 客户端一起安装的 ActiveX 控件。

我们也可能将此应用程序公开

我不鼓励您这样做,除非您的公司拥有或处理像 OneDriveOffice.com 这样的服务。如另一个答案中所述,这很快就会变得棘手。此外,对公众强制执行专有客户也不是一个好主意。此外,即使是 Microsoft 自己的解决方案也不能可靠地跨浏览器运行,并且仅在 IE 上运行得最好(即使 Edge 也存在问题),这将迫使特定浏览器向公众开放。不是个好主意。

但是,如果您确实需要,那么最好使用一些已经围绕 WebDAV 构建的解决方案。 Alfresco ECM(企业内容管理)是公开发行的一个示例,它使用类似于您的用例的 WebDAV。

IT Hit 还有一个,现场演示在这里:http://www.ajaxbrowser.com。他们还有一个关于如何在与您的用例相同的线路上设置您自己的 WebDAV 服务器的基本教程。您需要找到他们的文档。

【讨论】:

  • 我正试图让它在我的本地 ASP.NETCore 项目中工作。如果我将它添加到根文件夹,Word 只会打开没有任何文档的空白?如果有帮助,我正在使用 Word 19。有什么想法吗?
【解决方案2】:

当您说:“我们也可能公开此应用程序”时,您指的是哪种规模?只是团队中的几个人,还是作为需要处理编辑冲突、事务、锁定、性能等的真实 Web 应用程序?即使是你提到的内网解决方案,一旦 2-3 人开始编辑同一个文档,也可能会变得令人头疼。

对于这种类型的文档共享,您基本上有两种选择:

  1. 对行为类似于 MS Word 的富 Web UI 进行大量投资,其后端服务将信息存储在可扩展的数据存储中并提供同步编辑和文档下载,或者
  2. 与第三方供应商 API 或提供类似功能的白标提供商集成,但需付费。例如。 Box.com APIsHyperOfficeFirePad

如果您可以将相关文档转换为某种类型的表单,这将是一个非常简单的问题。可能有一百种不同的服务提供具有出色报告和数据库管理的嵌入式表单功能。如果需要 Word 格式的文档,那么您的应用只需将存储的数据转换为 .doc/.docx 文档供用户随意下载。

无论您采取什么方向,请尝试摆脱基于 PsTools 的当前设置。这就像一个 rinkydink 纸牌屋,正如 @Matt-Burland 所提到的,很可能很快就会造成安全灾难。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多