SpringBoot PageOffice 在线编辑 (完整版、有源码)

文章目录

  • 简介
  • 实例环境准备
    • 生成license.lic文件
    • 把jar安装到maven使项目能够使用maven引入
    • pom.xml 配置
    • application.properties配置
  • 项目结构、代码介绍
    • 项目结构:
    • BeanLinitConf类说明,PageOffice注入
    • OfficeOnlineApi类介绍
    • word.html 页面介绍
  • 源码下载

简介

此文档讲的是SpringBoot和PageOffice整合,在线编辑office的文件,在网上找了很多资料
第一个看到的是微软的“office online server”,这个太复杂了,需要安装中间件,安装还对系统有要求,必须是“windows server 2012 r2”或“Windows Server 2016”,但是这款是不收费的

第二个看到的是卓正软件的PageOffice,这个是收费的,但是可以试用,下下来后demo也多,demo基本都是基于jsp页面的,我不想用jsp,我写的html页面

第三个看到的是点聚的WebOffice,这个也是免费的,但是嘛,下下来的demo…不想说话,网页打开没有office客户端编辑那种界面,很不方便,也很不好操作,看了一眼直接放弃

最后我选择使用PageOffice

实例环境准备

技术 版本
Jdk 1.8
SpringBoot 2.1.5
PageOffice 4.5.0.9
Tomcat 8.0.32

去官网下载PageOffice包,下载地址:
http://www.zhuozhengsoft.com/download/PageOffice_4.5.0.9_Java.zip

解压后里面会有:
SpringBoot PageOffice 在线编辑 (完整版、有源码)_第1张图片

生成license.lic文件

把Samples4文件夹复制到Tomcat的webapp目录下,在启动tomcat访:http://localhost:8080/Samples4
访问后页面会提示输入公司名称等信息,然后输入序列号,序列号如上图文件目录下有个序列号.txt复制进去填入即可,我点击的是在线注册,注册成功后会在tomcat的webapp下的Samples4下的WEB-INF/lib目录下生成一个license.lic文件
SpringBoot PageOffice 在线编辑 (完整版、有源码)_第2张图片
你也可以访问看demo,有很多实例,可以实现哪些功能:
SpringBoot PageOffice 在线编辑 (完整版、有源码)_第3张图片
这时候tomcat已经没什么用了,可以关掉了

把jar安装到maven使项目能够使用maven引入

SpringBoot PageOffice 在线编辑 (完整版、有源码)_第4张图片
进入集成文件夹里面的lib目录,复制目录地址,打开命令窗口,使用cd进入复制的地址目录,执行:

mvn install:install-file -DgroupId=com.zhuozhengsoft -DartifactId=pageoffice -Dversion=4.5.0.9  -Dpackaging=jar  -Dfile=pageoffice4.5.0.9.jar

SpringBoot PageOffice 在线编辑 (完整版、有源码)_第5张图片

pom.xml 配置


	
		com.zhuozhengsoft
		pageoffice
		4.5.0.9
	
	
	
		org.springframework.boot
		spring-boot-starter-thymeleaf
	

application.properties配置

# 注册PageOffice后license.lic存放的路径,访问poserver.zz的时候需要license.lic文件(我这里就是resources目录下的file目录,我写的是绝对路径)
posyspath=G:/ideaProject/springboot-demo/online-office/src/main/resources/file/

项目结构、代码介绍

项目结构:

SpringBoot PageOffice 在线编辑 (完整版、有源码)_第6张图片

BeanLinitConf类说明,PageOffice注入

package com.onlineoffice.conf;

import com.zhuozhengsoft.pageoffice.poserver.Server;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Description :初始化Bean
 * ---------------------------------
 * @Author : SG.Y
 * @Date : 2019/5/9 15:40
 */
@Configuration
@ConfigurationProperties
public class BeanInitConf {

    // PageOffice配置
    private String posyspath;

    /***
     * PageOffice 注册
     * @return
     */
    @Bean
    public ServletRegistrationBean servletRegistrationBean() {
        Server poserver = new Server();
        //设置PageOffice注册成功后,license.lic文件存放的目录
        poserver.setSysPath(posyspath);
        ServletRegistrationBean srb = new ServletRegistrationBean(poserver);
        // 下面是把资源文件暴露出来,必须配置,否则页面访问不了
        srb.addUrlMappings("/poserver.zz", "/posetup.exe", "/pageoffice.js", "/jquery.min.js", "/pobstyle.css", "/sealsetup.exe");
        return srb;
    }

    public void setPosyspath(String posyspath) {
        this.posyspath = posyspath;
    }

}

OfficeOnlineApi类介绍

package com.onlineoffice.api;

import com.zhuozhengsoft.pageoffice.FileSaver;
import com.zhuozhengsoft.pageoffice.OpenModeType;
import com.zhuozhengsoft.pageoffice.PageOfficeCtrl;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;

/**
 * @Description :Office在线编辑、预览API
 * ---------------------------------
 * @Author : SG.Y
 * @Date : 2019/5/14 16:36
 */
@Controller
public class OfficeOnlineApi {

    @Value("${posyspath}")
    private String filePath;

    /**
     * 在线word文档编辑
     *
     * @param request
     * @param map
     * @return
     */
    @GetMapping("/word")
    public String showWord(HttpServletRequest request, Map map) {
        PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
        //设置授权程序servlet
        poCtrl.setServerPage("/poserver.zz");
        //添加自定义按钮
        poCtrl.addCustomToolButton("保存", "Save", 1);
        //保存按钮接口地址
        poCtrl.setSaveFilePage("/save");
        //打开文件(打开的文件类型由OpenModeType决定,docAdmin是一个word,并且是管理员权限,如果是xls文件,则使用openModeType.xls开头的,其他的office格式同等),最后一个参数是作者
        // TODO 这里有个坑,这里打开的文件是本地的,地址如果写成/结构的路径,页面就会找不到文件,会从http://xxxxx/G/id...去找,写成\\就是从本地找
        poCtrl.webOpen("G:\\ideaProject\\springboot-demo\\online-office\\src\\main\\resources\\file\\test.docx", OpenModeType.docAdmin, "光哥");
        //pageoffice 是文件的变量,前端页面通过这个变量加载出文件
        map.put("pageoffice", poCtrl.getHtmlCode("PageOfficeCtrl1"));
        //跳转到word.html
        return "word";
    }

    /**
     * 在线ppt文档编辑
     *
     * @param request
     * @param map
     * @return
     */
    @GetMapping("/ppt")
    public String showPPT(HttpServletRequest request, Map map) {
        PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
        //设置授权程序servlet
        poCtrl.setServerPage("/poserver.zz");
        //添加自定义按钮
        poCtrl.addCustomToolButton("保存", "Save", 1);
        //保存接口地址
        poCtrl.setSaveFilePage("/save");
        //打开文件(打开的文件类型由OpenModeType决定,docAdmin是一个word,并且是管理员权限,如果是xls文件,则使用openModeType.xls开头的,其他的office格式同等),最后一个参数是作者
        // TODO 这里有个坑,这里打开的文件是本地的,地址如果写成/结构的路径,页面就会找不到文件,会从http://xxxxx/G/id...去找,写成\\就是从本地找
        poCtrl.webOpen("G:\\ideaProject\\springboot-demo\\online-office\\src\\main\\resources\\file\\test.pptx", OpenModeType.pptNormalEdit, "光哥");
        //pageoffice 是文件的变量,前端页面通过这个变量加载出文件
        map.put("pageoffice", poCtrl.getHtmlCode("PageOfficeCtrl1"));
        //跳转到word.html
        return "ppt";
    }

    /**
     * 保存文件接口
     *
     * @param request
     * @param response
     */
    @RequestMapping("/save")
    public void saveFile(HttpServletRequest request, HttpServletResponse response) {
        // 保存修改后的文件
        FileSaver fs = new FileSaver(request, response);
        fs.saveToFile("G:\\test\\在线编辑\\" + fs.getFileName());
        fs.close();
    }

}

word.html 页面介绍

这里只展示word.html,ppt.html和word基本一样的




    
    在线编辑Office文件
    
    





启动后访问:

在线编辑Word:http://localhost:8080/word
在线编辑PPT:http://localhost:8080/ppt

SpringBoot PageOffice 在线编辑 (完整版、有源码)_第7张图片
SpringBoot PageOffice 在线编辑 (完整版、有源码)_第8张图片

源码下载

下载地址:https://github.com/y15211669315/online-office.git

你可能感兴趣的:(SpringBoot)