我有一个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代码的discussion,可以通过浏览器执行此过程。
有什么想法?
答案 0 :(得分:5)
首先,您可以访问doc这个词的目录吗?你在挂载webdav吗?
我相信终端会寻找一条路径,这是你的webdavUrl。要进行调试,请尝试运行相同的命令,但只能使用-R和webdavUrl参数。
Runtime.getRuntime().exec(new String[]{"open", "-R", webdavUrl});
-R将在finder中显示该文件,这样您就知道该终端实际上可以导航到您的webdavUrl。
答案 1 :(得分:2)
您可以尝试以下方法之一:
1 :按照here所述使用桌面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 +),则应在加载文档时打开应用程序一词。
以下资源可能会有所帮助,因为它们涵盖了在webdav服务器中打开/编辑word文件的不同方法。
答案 2 :(得分:0)
经过近4周的调查,我成功地为这个问题开发了一个解决方案:
现在在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上为MAC OSX打开文档,但如果您对文档版本有限制,则必须处理安全性和用户会话。无论如何,我成功地实现了这个解决方案,这是我发现完成整个过程的唯一解决方案。