OnlyOffice二次开发探索(J2EE)

一.安装OnlyOffice环境

可以参考:

1.Win7上通过DckerToolbox部署OnlyOffice

2.Linux通过Docker部署OnlyOffice

二.基于官网Java集成示例

1.下载官网示例代码

OnlyOffice二次开发探索(J2EE)_第1张图片

2.官网案例运行

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

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

  我使用的是eclipse

OnlyOffice二次开发探索(J2EE)_第2张图片

 如果是idea加上

OnlyOffice二次开发探索(J2EE)_第3张图片

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

OnlyOffice二次开发探索(J2EE)_第4张图片

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

OnlyOffice二次开发探索(J2EE)_第5张图片

3.案例修改

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

OnlyOffice二次开发探索(J2EE)_第6张图片

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

 OnlyOffice二次开发探索(J2EE)_第7张图片

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

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

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	       PrintWriter writer = null;
	        System.out.println("===saveeditedfile------------") ;
	        try {
	            writer = response.getWriter();
	            Scanner scanner = new Scanner(request.getInputStream()).useDelimiter("\\A");
	            String body = scanner.hasNext() ? scanner.next() : "";
	            JSONObject jsonObj = (JSONObject) new JSONParser().parse(body);
	            System.out.println("===saveeditedfile:" + jsonObj.get("status")) ;
	            /*
	                0 - no document with the key identifier could be found,
	                1 - document is being edited,
	                2 - document is ready for saving,
	                3 - document saving error has occurred,
	                4 - document is closed with no changes,
	                6 - document is being edited, but the current document state is saved,
	                7 - error has occurred while force saving the document.
	             * */
	            if ((long) jsonObj.get("status") == 2) {
	                /*
	                 * 当我们关闭编辑窗口后,十秒钟左右onlyoffice会将它存储的我们的编辑后的文件,,此时status = 2,通过request发给我们,我们需要做的就是接收到文件然后回写该文件。
	                 * */
	                /*
	                 * 定义要与文档存储服务保存的编辑文档的链接。当状态值仅等于2或3时,存在链路。
	                 * */
	                String downloadUri = (String) jsonObj.get("url");
	                System.out.println("====文档编辑完成,现在开始保存编辑后的文档,其下载地址为:" + downloadUri);
	                //解析得出文件名
	                //String fileName = downloadUri.substring(downloadUri.lastIndexOf('/')+1);
	                String fileName = request.getParameter("fileName");
	                System.out.println("====下载的文件名:" + fileName);

	                URL url = new URL(downloadUri);
	                java.net.HttpURLConnection connection = (java.net.HttpURLConnection) url.openConnection();
	                InputStream stream = connection.getInputStream();
	                //更换为实际的路径
	                File savedFile = new File("F:\\DataOfHongQuanzheng\\onlyoffice_data\\app_data\\"+fileName);
	                try (FileOutputStream out = new FileOutputStream(savedFile)) {
	                    int read;
	                    final byte[] bytes = new byte[1024];
	                    while ((read = stream.read(bytes)) != -1) {
	                        out.write(bytes, 0, read);
	                    }
	                    out.flush();
	                }
	                connection.disconnect();
	            }
	        } catch (IOException e) {
	            // TODO Auto-generated catch block
	            e.printStackTrace();
	        } catch (ParseException e) {
	            // TODO Auto-generated catch block
	            e.printStackTrace();
	        }
	        /*
	         * status = 1,我们给onlyoffice的服务返回{"error":"0"}的信息,这样onlyoffice会认为回调接口是没问题的,这样就可以在线编辑文档了,否则的话会弹出窗口说明
	         * */
	        writer.write("{\"error\":0}");
	}

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

OnlyOffice二次开发探索(J2EE)_第8张图片

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

OnlyOffice二次开发探索(J2EE)_第9张图片

OnlyOffice二次开发探索(J2EE)_第10张图片

三.我的案例源码 

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

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

OnlyOffice二次开发探索(J2EE)_第11张图片

你可能感兴趣的:(OnlyOffice,OnlyOffice,J2EE,二次开发,Java)