当前位置:   article > 正文

OnlyOffice二次开发探索(J2EE)_onlyoffice 二次开发

onlyoffice 二次开发

一.安装OnlyOffice环境

可以参考:

1.Win7上通过DckerToolbox部署OnlyOffice

2.Linux通过Docker部署OnlyOffice

二.基于官网Java集成示例

1.下载官网示例代码

2.官网案例运行

  Jdk1.8、windows操作系统、maven、tomcat(使用idea不需要安装)、eclipse/idea开发工具

  使用idea开发需在pom.xml导入tomcat插件即可,使用eclipse开发,需安装tomcat,并部署至tomcat容器中,运行项目工程。

  我使用的是eclipse

 如果是idea加上

  修改配置文件settings.properties,配置自己的Document Server服务器地址

  运行项目以后出现下图界面表示运行成功

3.案例修改

一般打开文件或者创建文件会出现

主要是因为url或者callbackUrl路径不正确

 

url是打开文件地址,地址保证onlyoffice服务器可以访问到即可

callbackUrl我们可以写一个回调方法,将文件保存到自己想保存的位置,我是写了一个CallBackServlet,保存到本地硬盘,具体存到哪里可根据业务需求,也可以配置专门的文件服务器

  1. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  2. PrintWriter writer = null;
  3. System.out.println("===saveeditedfile------------") ;
  4. try {
  5. writer = response.getWriter();
  6. Scanner scanner = new Scanner(request.getInputStream()).useDelimiter("\\A");
  7. String body = scanner.hasNext() ? scanner.next() : "";
  8. JSONObject jsonObj = (JSONObject) new JSONParser().parse(body);
  9. System.out.println("===saveeditedfile:" + jsonObj.get("status")) ;
  10. /*
  11. 0 - no document with the key identifier could be found,
  12. 1 - document is being edited,
  13. 2 - document is ready for saving,
  14. 3 - document saving error has occurred,
  15. 4 - document is closed with no changes,
  16. 6 - document is being edited, but the current document state is saved,
  17. 7 - error has occurred while force saving the document.
  18. * */
  19. if ((long) jsonObj.get("status") == 2) {
  20. /*
  21. * 当我们关闭编辑窗口后,十秒钟左右onlyoffice会将它存储的我们的编辑后的文件,,此时status = 2,通过request发给我们,我们需要做的就是接收到文件然后回写该文件。
  22. * */
  23. /*
  24. * 定义要与文档存储服务保存的编辑文档的链接。当状态值仅等于2或3时,存在链路。
  25. * */
  26. String downloadUri = (String) jsonObj.get("url");
  27. System.out.println("====文档编辑完成,现在开始保存编辑后的文档,其下载地址为:" + downloadUri);
  28. //解析得出文件名
  29. //String fileName = downloadUri.substring(downloadUri.lastIndexOf('/')+1);
  30. String fileName = request.getParameter("fileName");
  31. System.out.println("====下载的文件名:" + fileName);
  32. URL url = new URL(downloadUri);
  33. java.net.HttpURLConnection connection = (java.net.HttpURLConnection) url.openConnection();
  34. InputStream stream = connection.getInputStream();
  35. //更换为实际的路径
  36. File savedFile = new File("F:\\DataOfHongQuanzheng\\onlyoffice_data\\app_data\\"+fileName);
  37. try (FileOutputStream out = new FileOutputStream(savedFile)) {
  38. int read;
  39. final byte[] bytes = new byte[1024];
  40. while ((read = stream.read(bytes)) != -1) {
  41. out.write(bytes, 0, read);
  42. }
  43. out.flush();
  44. }
  45. connection.disconnect();
  46. }
  47. } catch (IOException e) {
  48. // TODO Auto-generated catch block
  49. e.printStackTrace();
  50. } catch (ParseException e) {
  51. // TODO Auto-generated catch block
  52. e.printStackTrace();
  53. }
  54. /*
  55. * status = 1,我们给onlyoffice的服务返回{"error":"0"}的信息,这样onlyoffice会认为回调接口是没问题的,这样就可以在线编辑文档了,否则的话会弹出窗口说明
  56. * */
  57. writer.write("{\"error\":0}");
  58. }

修改后可以正常打开文件了

 关闭后如果有做修改,会自动保存

三.我的案例源码 

因为官网的demo无法直接运行,也有挺多网友问我要demo,我就把我改的demo放到github希望可以帮到大家

地址:https://github.com/hqzhen/DemoOfOnlyoffice.git

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/476228
推荐阅读
相关标签
  

闽ICP备14008679号