1、下载jar包
_卓正软件 - PageOffice官方网站 - 在线编辑Word、Excel的Office文档控件
2.将jar包打入maven仓库
mvn install:install-file -Dfile=D:\pageoffice4.5.0.3.jar -DgroupId=my.pageoffice -DartifactId=pageoffice -Dversion=1.0 -Dpackaging=jar
3、添加依赖
<dependency>
<groupId>my.pageoffice</groupId>
<artifactId>pageoffice</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.7.2</version>
</dependency>
4、获得licence.lic
将Samples4放入tomcat,访问:http://localhost:8080/Samples4 ,可以看到如下:
再往下拉,看到
随便点一个,会让注册,随便填,但注册码需要注意,要搜与jar版本匹配的或更高版本的,如果jar是4.0,注册码是2.0的最后打开pageoffice时就会提示你
当前PAGEOFFICE需要获取更高版本的授权才能正常运行。(ERROR:0X0005)
PageOffice V4.0 标准版试用序列号:IMTG6-BSXJ-JGZ6-3BIWM
PageOffice V4.0 专业版试用序列号:CA1XB-MF7Y-12ST-PSBP2
注册完成后,可以在D:\apache-tomcat-8.5.43\webapps\Samples4\WEB-INF\lib看到licence.lic文件
把这个licence.lic移动到一个位置,与6、中的 posyspath 一致
5、整合 thymeleaf
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
6、 配置Bean
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 ="d:/lic/";
/***
* 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;
}
}
7、测试代码
注意里面的文档、licence.lic等路径
package com.dxl.system.controller.wordonline;
import com.zhuozhengsoft.pageoffice.FileSaver;
import com.zhuozhengsoft.pageoffice.OpenModeType;
import com.zhuozhengsoft.pageoffice.PageOfficeCtrl;
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
//@Api(value = "word",tags = {"word--接口"})
public class OfficeOnlineApi {
@GetMapping("/w")
public String showWord2(){
return "ww";
}
/**
* 在线word文档编辑
*
* @param request
* @param map
* @return
*/
@GetMapping("/word")
public String showWord(HttpServletRequest request, Map<String, Object> 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("d:\\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<String, Object> 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("d:\\test.docx");
fs.close();
}
}
8、templates中写html
word.html (注意:POBrowser.openWindowModeless第一个参数 路径)
<!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>
ww.html(后来又随便测试用谷歌、火狐打开pageoffice又增加的)可以自己定义所使用html
<!DOCTYPE html>
<html lang="en">
<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>
<a id="ddddd" onclick="javascript:POBrowser.openWindowModeless('/word','width=1200px;height=800px;');" href="#") >POBrowser方式打开Word文档</a><br><br><br>
</body>
</html>
9、效果
点击:(没安装时会提示下载安装)