【问题标题】:Open WebDAV word file on OSX在 OSX 上打开 WebDAV word 文件
【发布时间】:2016-03-12 15:10:47
【问题描述】:

我有一个在 MS Word 上打开 WebDAV 文件的 Java 应用程序。使用以下代码在 Windows 上成功运行:

Runtime.getRuntime().exec("cmd /c start winword " + webdavUrl);

但在 Mac OSX 上这是不可能的。我试过这个功能,但它只打开一个空白文档:

Runtime.getRuntime().exec(new String[]{"open", "-a", "Microsoft Word", webdavUrl});

如果我从 URL 创建一个文件,我可以打开该文件,但我失去了对 WebDav URL 的引用。

我找到了一个discussion,它是关于可以从浏览器执行此过程的 JavaScript 代码。

有什么想法吗?

【问题讨论】:

  • 也许这里建议的解决方案可能会有所帮助(例如使用 AppleScript 的解决方案):stackoverflow.com/questions/8387371/…。不过,我目前无法尝试这些。
  • 对于任何想知道为什么这在 Office 2016 for Mac 中不起作用的人,原因是此版本的 Office 中删除了 WebDAV 支持。

标签: java macos ms-word webdav


【解决方案1】:

首先,你能访问word doc所在的目录吗?你在安装你的 webdav 吗?

我相信终端会寻找一条路径,即您的 webdavUrl。要进行调试,请尝试运行相同的命令,但仅使用 -R 和 webdavUrl 参数。

Runtime.getRuntime().exec(new String[]{"open", "-R", webdavUrl});

-R 将在 finder 中显示文件,这样您就知道终端实际上​​可以导航到您的 webdavUrl。

【讨论】:

  • 另外,看看打开的命令文档。它具有您可以使用的所有参数。 developer.apple.com/library/mac/documentation/Darwin/Reference/…
  • 您应该将"-aR 编辑为"-aR",以防有人复制您的代码行来尝试。
  • 谢谢你的收获,应该只是-R
  • 哦,呵呵,我的意思是你需要一个额外的 > " "-R",很抱歉打扰你^^
  • 我认为您误解了这个问题。我想以与单击File然后单击Open Url 相同的方式在Word 上打开文件。此过程允许通过 WebDAV 协议将 word 直接连接到服务器文档,并且很明显 Save Icon 上的更改出现了 Syncsymbol。有一个Javascript library 使用 Safari 的 SharePoint 浏览器插件来使用 WebDAV 打开文档,所以我正在搜索相同的解决方案,但从桌面而不是像 Safari 这样的浏览器。无论如何,感谢您的努力。
【解决方案2】:

您可以尝试以下方法之一:

1:按照here 的描述使用 Desktop Api。

File myFile = new File(webdavUrl);
Desktop.getDesktop().open(myFile);

2: 使用ms-word: uri,详细说明here

例如,在您的浏览器中输入"ms-word:ofe|u|http://webdavUrl"。 如果您安装了 Microsoft Office (2010 SP2+),这应该会打开 word 应用程序并加载您的文档。

以下资源可能会有所帮助,因为它们涵盖了您可以在 webdav 服务器中打开/编辑 word 文件的不同方式。

【讨论】:

    【解决方案3】:

    经过近 4 周的调查,我成功地为这个问题制定了解决方案:

    1. 首先,在服务器端,创建一个端点以使用 IT HIT 的 javascript library 打开 word 文档。该库使用 Sharepoint 浏览器插件在 Word 2011 for Mac OSX 上使用 Webdav 协议打开文档。
    2. 现在在 java 上,使用控制台打开带有端点 URL 的 Safari 以打开 word 文档。为此,您可能需要将文档的 URL 作为端点的参数传递。

      Runtime.getRuntime().exec(new String[]{"open", "-a", "Safari", getWebdavUrl(document)});
      
      private static String getWebdavUrl(Document document) throws JSONException, UnsupportedEncodingException {
      
      RestClient client = RestClient.getClient();
      String baseUrl = client.SERVER_URL + "webdav_end_point";
      JSONObject params = new JSONObject();
      
      params.put("url", document.getUrl());
      
      //convert the JSON params to GET params for the URL
      String url = baseUrl + RestClient.buildParamsString(params);
      
      //https://wwww.example.com/webdav_end_point?url=www.example.com/path/to/webdav/document.docx
      return url;
      }
      

    这允许在 Word 2011 for MAC OSX 上打开文档,但如果您对文档版本有限制,则必须处理安全性和用户会话。无论如何,我成功地实施了这个解决方案,这是我发现的唯一完成该过程的解决方案。

    【讨论】:

    • Re Mac 使用,请注意 Chrome 放弃了对 Java 插件的支持,由于某种原因我还不明白,Mac Chrome 不会自动打开基于 ms-word: 协议的 URL由办公室。然而,Safari 和其他人这样做。所以在 MAC 上,你不需要使用 IT HIT 的库,你可以根据 ms-word: 协议创建一个指向文档的链接。现在我希望我能弄清楚为什么 Mac Chrome 不能正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    相关资源
    最近更新 更多