【问题标题】:Save and Open Remote Documents保存和打开远程文档
【发布时间】:2013-02-05 00:59:09
【问题描述】:

我对 microsoft office 开发一无所知,但我想构建一个插件原型,允许用户从远程存储库保存和打开文档。也许稍后在服务器上构建版本控制系统 - 但服务器端部分是其中最简单的部分(在我的情况下)。也许我应该专注于一次让它为一个办公应用程序工作 - 比如说 MS WOrd(除非人们认为 excel 更容易使用)。并让我们以 Office 2007 为目标(因为这是我安装的)。

保存

存储库将存储已标记的文档(由许多标签、多种类型)。保存文档时,AddIn 需要首先显示一个对话框并允许标记。 AddIn 需要通过 SOAP 或 REST api 向我们的服务器提交一组标签以及文档(Base 64 编码?)。几个问题

  1. 这可能吗?如果有关于如何实现的建议?是否有一种机制可以访问您正在查看的文档的二进制数据(流?)?
  2. 是否可以从 File-SaveAs 对话框中提取此内容?或者我需要创建自己的菜单项吗? Obviuos 前者可能是用户更熟悉的……
  3. 是否已经有一种远程文档持久性机制可供我使用?

开幕

一旦保存了许多文档,我们将需要一种检索/打开文档的方法。所以我想我需要一个允许浏览文档标签类型->标签值的对话(树可能有更多级别,但想从那里开始)。打开文档后,我认为 API 需要

  1. 进行 RPC 调用 (SOAP / REST) 以检索文档 - 解码内容(实际文档)并在 Word 中打开该流(例如)
  2. 我还想将我的标签保存在内存中

XML 设计

为了最好地可视化 Word 和服务器之间交换的数据,让我们想象一个 XML 结构,如下所示:

<document name="recapOfTheGame.doc">
   <tags>
      <tag type="team">New York Yankees</tag>
      <tag type="team">Boston Redsox</tag>
      <tag type="city">New York</tag>
      <tag type="city">Boston</tag>
      <tag type="type">recap</tag>
   </tags>
   <content encoding="base64">AKJSGHKASHGFKSJDHGFKSJDHGFSKDJFHGSKJDGSKDJGSKDJFHGSDKJFH</content>
</document>

存储库浏览器应在树中的多个位置显示此文档;这是一个存储库的示例,在五个位置显示此文档(基于标签):

repository
    + untagged <not shown in XML>
    - team  
        + Tampa Bay Rays <not shown in XML>
        - Boston Resox
               recapOfTheGame.doc
        - New York Yankeeys
               recapOfTheGame.doc
    - city
        + Tampa Bay <not shown in XML> 
        - new york 
               recapOfTheGame.doc
        - boston
               recapOfTheGame.doc
    - type
        + box scores <not shown in XML> 
        - recaps
               recapOfTheGame.doc

其他想法

我只提供 XML 设计以使概念更具体,并且我对存储标签的其他方法持开放态度(如果可能的话,在文档中)。基本上,我将不胜感激任何方向。

我以不同的方式问了这个问题,以检查答案是否会有所不同,Open WORD Document from Database OR WebService

我接受下面的 webDav 回答,因为它在两者之间很常见,并且是 alfresco 所做的。

谢谢

【问题讨论】:

    标签: c# ms-word vsto ms-office


    【解决方案1】:

    看看使用WebDAV打开/保存文档;尽管 ymmv,Office 对此提供了支持。如果您无法使用内置的 Office 支持,请使用WebDrive、NetDrive 等,或者自己构建。

    如果您的存储库支持,另一种选择是 SharePoint 协议。例如,Alfresco 已经克隆了其中的一部分。这还具有 Word 中内置客户端的优势。

    CMIS 比 WebDAV 更现代,但您必须构建自己的客户端(查看 Apache Chemistry)。不过,如果您的存储库支持它,这可能是可行的;

    您还可以使用 SOAP 或 REST,正如您提到的,通过 VSTO,但这些也属于构建您自己的客户端类别。

    关于标签:您可以将它们作为 WebDAV 属性传递。将它们作为 CustomXML 部分(或只是文档属性——其优点是它们在 Word UI 中可见)放在 docx 中可能也是值得的,因此即使移动或其他任何东西,文档也会包含它们。

    【讨论】:

    • 目的是将这个插件安装在我们信任域之外的客户端电脑上,并且一切都需要在端口 80 上运行;你是什​​么意思建立你自己的客户?您是否将 AddIn 称为客户端 - 我认为我不会在无需构建大量自己的客户端和服务器的情况下探索我需要的存储库...
    • 我假设您将构建一个 VSTO 插件。 “构建自己的客户端”是指构建负责浏览存储库的组件;这只是整个插件的一部分。根据我的帖子,您不必构建存储库浏览部分。
    • 您提到 Alfesco 克隆了部分 SharePoint 协议。您有关于此协议规范的任何信息吗?
    • @AntonKhritonenkov 开始关注docs.microsoft.com/en-us/openspecs/sharepoint_protocols/… 这些天,您可能需要考虑 WOPI
    • 谢谢! WOPI 对我不起作用,因为它强制最终用户拥有 Office 365 商业许可证。
    猜你喜欢
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    相关资源
    最近更新 更多