文章目录

  • 简介
  • 实例环境准备
    • 生成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

解压后里面会有:

生成license.lic文件

把Samples4文件夹复制到Tomcat的webapp目录下,在启动tomcat访:http://localhost:8080/Samples4
访问后页面会提示输入公司名称等信息,然后输入序列号,序列号如上图文件目录下有个序列号.txt复制进去填入即可,我点击的是在线注册,注册成功后会在tomcat的webapp下的Samples4下的WEB-INF/lib目录下生成一个license.lic文件

你也可以访问看demo,有很多实例,可以实现哪些功能:

这时候tomcat已经没什么用了,可以关掉了

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


进入集成文件夹里面的lib目录,复制目录地址,打开命令窗口,使用cd进入复制的地址目录,执行:

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

pom.xml 配置

<!-- 添加PageOffice依赖(必须) --><dependency><groupId>com.zhuozhengsoft</groupId><artifactId>pageoffice</artifactId><version>4.5.0.9</version></dependency><!-- 页面配置 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>

application.properties配置

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

项目结构、代码介绍

项目结构:

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*/@Beanpublic 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<String, Object> map) {PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);//设置授权程序servletpoCtrl.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.htmlreturn "word";}/*** 在线ppt文档编辑** @param request* @param map* @return*/@GetMapping("/ppt")public String showPPT(HttpServletRequest request, Map<String, Object> map) {PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);//设置授权程序servletpoCtrl.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.htmlreturn "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基本一样的

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head><meta charset="UTF-8"><title>在线编辑Office文件</title><script type="text/javascript" src="jquery.min.js"></script><script type="text/javascript" src="pageoffice.js" id="po_js_main"></script>
</head>
<body>
<!--POBrowser打开一个窗口用来编辑文件-->
<a id="open_a" style="display: none;" onclick="javascript:POBrowser.openWindowModeless('/word','width=1200px;height=800px;');" href="#">打开文件</a>
<!-- 页面布局 -->
<div style="width:100%;height:900px; align-content: center" th:utext="${pageoffice}"></div>
<script type="text/javascript">function Save() {document.getElementById("PageOfficeCtrl1").WebSave();}
</script>
<script>$(function () {var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串var isOpera = userAgent.indexOf("Opera") > -1;// 获取浏览器类型function getType() {//判断是否chorme浏览器if (userAgent.indexOf("Chrome") > -1) {return "Chrome";}//判断是否IE浏览器if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) {return "IE";}//判断是否Edge浏览器if (userAgent.indexOf("Trident") > -1) {return "Edge";}}// POBrowser打开一个窗口用来编辑文件function open() {$("#open_a").click();}// pageOffice有很多浏览器都不支持,不支持则使用POBrowser打开一个窗口用来编辑文件if (getType() != 'Edge') {// 延迟一秒在打开,是因为如果即时打开,可能有些文件请求还没加载好,会检测出客户端未安装pageOffice控件setTimeout(open, 1000)}});
</script>
</body>
</html>

启动后访问:

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


源码下载

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

SpringBoot PageOffice 在线编辑 (完整版、有源码)相关推荐

  1. 最新版千帆直播网站系统PHP完整版源码(PC+WAP在线观看视频)附安装教程

    最新版千帆直播网站PHP完整版源码,PC+WAP在线观看视频直播系统 安装方法: 1.导入数据库文件 zhibo.sql 2.修改数据库配置文件  有多处包含UC配置; 根目录:config.inc. ...

  2. 网页爬虫python代码_《用python写网络爬虫》完整版+源码

    原标题:<用python写网络爬虫>完整版+源码 <用python写网络爬虫>完整版+附书源码 本书讲解了如何使用Python来编写网络爬虫程序,内容包括网络爬虫简介,从页面中 ...

  3. 徐州php溪谷_ThinkPHP溪谷H5游戏平台系统V3.0完整版源码

    ThinkPHP溪谷H5游戏平台系统V3.0完整版源码,新增H5游戏盒子APP以及混服系统两大版块, 最新溪谷H5游戏平台系统v3.0完整版源码,在成熟版本H5游戏平台系统基础上开发出的更便捷高效的专 ...

  4. 徐州php溪谷_ThinkPHP溪谷H5游戏平台系统V3.0完整版源码源码下载

    源码介绍 最新溪谷H5游戏平台系统v3.0完整版源码,在成熟版本H5游戏平台系统基础上开发出的更便捷高效的专业联运平台系统,在依然包含原有后台管理系统.PC官网.渠道联盟.微信公众号接入等核心功能版块 ...

  5. php手机发卡,PHP最新金发卡企业级发卡平台整站源码(自适应手机端) 支付通道齐全 运营级自动发卡完整版源码 发卡网源码...

    [温馨提示]源码包解压密码:www.youhutong.com 资源描述 PHP最新金发卡企业级发卡平台整站源码(自适应手机端) 支付通道齐全 运营级自动发卡完整版源码 发卡网源码 安装教程: 环境p ...

  6. 虫虫asp建站源码_虫虫留言本V2.0完整版源码

    虫虫留言本V2.0完整版源码 虫虫留言本V2.0完整版正式推出,功能全面开放,希望大家多多支持!! 后台地址:域名/wormadmin/login.aspx 帐号和密码均为:admin 数据库:MSS ...

  7. php7伪静态 源码,freekan3.8.3去授权完整版源码

    freekan3.8.3去授权完整版源码 所属分类:其他 开发工具:PHP 文件大小:34865KB 下载次数:12 上传日期:2018-06-28 04:18:12 上 传 者:migua 说明:  ...

  8. 高仿精仿新浪微博客户端完整版源码

    给大家分享一款非常不错的,高仿精仿新浪微博客户端完整版源码,现在网上很少有这个源码,喜欢的朋友可以下载学习一下吧. 下载地址: http://code.662p.com/view/345.html

  9. php电销源码部署,【独家分享】最新价值4800接单运营版电销语音机器人完整版源码+文字安装教程...

    [独家分享]最新价值4800接单运营版[电销语音机器人]完整版源码+文字安装教程 完完整整,接单运营级的东西,含非常完整的教程.搭建过程中如果有不明白的地方,可以直接联系.,或者群内喊社区大佬协助. ...

  10. pageoffice 在线编辑 word 文档,保存之后返回自定义的值,并把值传到父页面

    1.    描述:最近项目有个在线编辑office 办公文档的功能, 采用的方案是用 pageoffice 在线编辑 office 文档. 因为高版本的谷歌和火狐不支持任何插件了.所以pageoffi ...

最新文章

  1. 微信小程序万里目_微信小程序学习用推荐:破音万里:音频播放,音乐列表
  2. Java 图片处理——如何生成高清晰度而占有磁盘小的缩略图
  3. 手把手带你用数据库中间件Mycat+SpringBoot完成分库分表
  4. 解决log4j2漏洞遭到挖矿、僵尸进程病毒攻击
  5. 音视频技术开发周刊 | 165
  6. typescript继承和重写
  7. java加密工作模式None_java加解密算法--对称加密工作模式
  8. 从零开始学习前端开发 — 15、CSS3过渡、动画
  9. ARM中断分析之一:中断控制器和CPU、外设的关系
  10. 基于SpringBoot+mybatis+layui就业管理系统设计和实现
  11. 如何查找rpm方式安装的软件路径
  12. as400还有发展前景吗_web前端还有发展前景吗?该如何去学习
  13. mysql建立索引注意事项_索引的原理及索引建立的注意事项
  14. 【kafka】kafka record is corrupt(记录损坏)
  15. 风控必知必会|两大逻辑表五大基础报表
  16. shell脚本 获取第几行 第几列 的命令 awk sed
  17. 微信小程序中slider实现拾色器功能
  18. (unsigned char) ~0 1
  19. 在excel 同时冻结行和列
  20. 探索 Word 2007 开发(二):扩展 Ribbon

热门文章

  1. window10运行不了1stopt_1stopt运行不了,到底为什么?
  2. Android MVVM框架搭建(一)ViewModel + LiveData + DataBinding
  3. NetApp存储设置时间报“date: cannot set date when NTP is running.”处理
  4. 基于Ricequant时间序列模型预测股价
  5. 手机修改ntp服务器地址,修改手机ntp服务器ip地址
  6. chrome浏览器最小字体大小限制的解决方案
  7. Simulink飞行动力学教程
  8. colmak键盘_萌神进化 IKBC 新POKER2机械键盘体验
  9. tomcat集群(小型项目)
  10. 运行Wlmadmin无法访问计算机,网络许可证管理员指引.PDF