在OSX上打开WebDAV的Word文件

23

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

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

然而在Mac OSX上,这是不可能的。我尝试了这个函数,但它只会打开一个空白文档:

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

如果我从URL创建一个文件,我可以打开该文件,但我会失去它与WebDav URL的关联。
我发现了一个关于使用JavaScript代码可以在浏览器中执行此过程的讨论
有什么想法吗?

1
也许这里提出的解决方案可能会有所帮助(例如使用AppleScript的解决方案):https://dev59.com/Pl3Va4cB1Zd3GeqPFfYy。不过我目前无法尝试这些解决方案。 - Dirk Vollmar
对于任何想知道为什么Office 2016 for Mac中无法运行此功能的人来说,原因是因为该版本的Office已删除了WebDAV支持。 - Luca Spiller
3个回答

5

首先,您能访问Word文档所在的目录吗?您是否已经挂载了WebDAV?

我认为终端将会寻找一个路径,即您的WebDAV URL。为了进行调试,请尝试仅使用-R和webdavUrl参数运行相同的命令。

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

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


1
另外,请查看open命令文档。它包含了您可以使用的所有参数。https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/open.1.html - Ahmed Musallam
1
如果有人复制你的代码行来尝试它,你应该将"-aR编辑为"-aR" - Adam Martinu
1
谢谢指出,应该只是-R。 - Ahmed Musallam
1
哦,呵呵,我的意思是你需要一个额外的">",否则你的代码片段会产生错误。所以它应该看起来像"-R",抱歉打扰你^^ - Adam Martinu
1
我觉得你误解了问题。我想以与单击“文件”然后单击“打开URL”相同的方式在Word中打开文件。这个过程允许Word通过WebDAV协议直接连接到服务器文档,并且在“保存图标”上出现“同步”符号的变化是明显的。有一个Javascript库使用Safari的SharePoint浏览器插件以WebDAV方式打开文档,因此我正在寻找相同的解决方案,但不是通过像Safari这样的浏览器。无论如何,感谢您的努力。 - Tito Leiva
1
我明白了,很抱歉我没能提供太多帮助。您尝试过在OsX上挂载DAV服务器,然后使用终端从挂载的DAV打开文档吗?然后可能要一直观察文档,当它关闭时,您可以卸载DAV服务器。此外,您可能需要查看此文章。看起来,Microsoft Office 2016将不再支持WebDav协议的打开URL功能。 - Ahmed Musallam

2
您可以尝试以下方法之一: 1:按照此处所述使用桌面API。
File myFile = new File(webdavUrl);
Desktop.getDesktop().open(myFile);

2: 使用详细说明此处ms-word: URI。

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

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


0

经过将近4周的调查研究,我成功地为这个问题开发出了一个解决方案:

  1. 首先,在服务器端创建一个终端点,使用IT HIT的javascript library打开Word文档。该库使用Sharepoint浏览器插件以Webdav协议在Mac OSX上的Word 2011中打开文档。
  2. 现在在Java中,使用控制台打开Safari并输入终端点URL以打开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());
    
    //将JSON参数转换为URL的GET参数
    String url = baseUrl + RestClient.buildParamsString(params);
    
    //https://wwww.example.com/webdav_end_point?url=www.example.com/path/to/webdav/document.docx
    return url;
    }
    

这样可以在MAC OSX上的Word 2011中打开文档,但如果您对文档编辑有限制,则必须处理安全性和用户会话。无论如何,我成功地实现了这个解决方案,并且这是我找到的唯一完成该过程的解决方案。


关于在 Mac 使用 Chrome,请注意 Chrome 放弃对 Java 插件的支持,而且出于某种我尚未理解的原因,Mac 版的 Chrome 不会自动打开由 Office 引入的基于 ms-word 协议的 URL。但 Safari 和其他浏览器可以做到这一点。所以在 Mac 上,您不需要使用 IT HIT 的库,只需创建一个基于 ms-word 协议的文档链接即可。 现在我希望我能找出为什么 Mac 版 Chrome 不会遵守规则的原因。 - David Brown

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接