Java 在OSX上打开WebDAV word文件

Java 在OSX上打开WebDAV word文件,java,macos,ms-word,webdav,Java,Macos,Ms Word,Webdav,我有一个Java应用程序,可以在MS Word上打开WebDAV文件。这在Windows上成功运行,代码如下: Runtime.getRuntime().exec("cmd /c start winword " + webdavUrl); 但在MacOSX上这是不可能的。我尝试了此功能,但它只打开一个空白文档: Runtime.getRuntime().exec(new String[]{"open", "-a", "Microsoft Word", webdavUrl}); 如果我从URL

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

Runtime.getRuntime().exec("cmd /c start winword " + webdavUrl);
但在MacOSX上这是不可能的。我尝试了此功能,但它只打开一个空白文档:

Runtime.getRuntime().exec(new String[]{"open", "-a", "Microsoft Word", webdavUrl});
如果我从URL创建了一个文件,我可以打开该文件,但是我丢失了它对WebDav URL的引用

我发现了一个关于javascript代码的例子,该代码可以从浏览器中执行此过程


有什么想法吗

首先,你能访问doc这个词所在的目录吗?您正在安装webdav吗

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

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

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

您可以尝试以下操作之一:

1:按说明使用桌面Api

2: 使用
msword:
uri作为详细信息

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

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


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

  • 首先,在服务器端,创建一个端点,用它的javascript打开word文档。此库使用Sharepoint浏览器插件在Word 2011 for Mac OSX上使用Webdav协议打开文档
  • 现在在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());
    
    //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上打开文档,但如果对文档版本有限制,则必须处理安全性和用户会话。无论如何,我成功地实现了这个解决方案,这是我发现的唯一一个完成这个过程的解决方案。

    这里建议的解决方案可能会有所帮助(例如,使用AppleScript的解决方案):。不过,我目前无法尝试这些功能。如果有人想知道为什么在Office 2016 For Mac中不起作用,原因是此版本的Office中删除了WebDAV支持。另外,请查看open command文档。它包含了您可以使用的所有参数。你应该编辑
    “-aR
    “-aR”
    ,以防有人复制你的代码行来尝试它。感谢你的捕获,它应该是-Roh,呵呵,我的意思是你需要一个额外的>”<不过,否则你的代码片段会产生错误。所以它看起来应该像
    “-R”
    ,很抱歉打扰你^^^我想你误解了这个问题。我想在Word上打开文件,方法与单击
    文件
    然后单击
    打开Url
    相同。此过程允许word通过WebDAV协议直接连接到服务器文档,并且
    Save图标上出现
    Sync
    符号的变化很明显。有一个应用程序使用Safari的SharePoint浏览器插件使用WebDAV打开文档,因此我正在从桌面搜索相同的解决方案,而不是像Safari这样的浏览器。无论如何,感谢您的努力。重新使用Mac,请注意Chrome放弃了对Java插件的支持,出于某种原因,我还不明白,Mac Chrome不会自动打开基于office引入的ms word:协议的URL。不过,Safari和其他公司也这样做。因此,在MAC上,您不需要使用它的HIT库,您只需根据ms word:协议创建指向文档的链接即可。现在,我希望我能弄明白为什么Mac Chrome不会表现出来。
    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;
    }