环境
- spring boot 1.5.8
- shiro
- PageOffice 4.5.0.12
- Freemarker
集成
PageOffice功能更强大 集成更简单,支持JAVA、ASP.NET、PHP多种编程开发语言,使开发集成简单高效,事半功倍。
引用官网宣传词
官方提供了spring boot themeleaf集成的版本,但是工作中指定使用freemarker,所以写下这篇文章,以作参考。
依赖引入
首先添加依赖pageoffice4.5.0.12.jar 到pom.xml。官方提供了基本jar包,引入到本项目中即可。不采取本地引入也可上传到maven私服 引入。
<dependency>
<groupId>com.zhuozhengsoft</groupId>
<artifactId>pageoffice</artifactId>
<version>4.5.0.12</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/pageoffice4.5.0.12.jar</systemPath>
</dependency>
添加Bean注册
自定义文件,添加Bean注册,为了简便直接添加到PageOfficeController
。
/**
* 添加PageOffice的服务器端授权程序Servlet(必须)
*
* @return
*/
@Bean
public ServletRegistrationBean servletRegistrationBean() {
com.zhuozhengsoft.pageoffice.poserver.Server poserver = new com.zhuozhengsoft.pageoffice.poserver.Server();
poserver.setSysPath("/");//设置PageOffice注册成功后,license.lic文件存放的目录
ServletRegistrationBean srb = new ServletRegistrationBean(poserver);
srb.addUrlMappings("/poserver.zz");
srb.addUrlMappings("/posetup.exe");
srb.addUrlMappings("/pageoffice.js");
srb.addUrlMappings("/jquery.min.js");
srb.addUrlMappings("/pobstyle.css");
srb.addUrlMappings("/sealsetup.exe");
return srb;
}
poserver.setSysPath("/")
所指定地址为license.lic
文件生成地址。用户在第一次使用时,会提示安装输入posetup.exe
,以及输入序列号,官方提供了一个测试序列号,在官网提供的例子当中。
例子
文件查看、保存
查看
@RequestMapping(value = "/docView", method = RequestMethod.GET)
public ModelAndView docView(HttpServletRequest request, ModelMap map) {
PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
poCtrl.setServerPage("/poserver.zz");//设置服务页面
poCtrl.addCustomToolButton("保存", "Save", 1);//添加自定义保存按钮
poCtrl.addCustomToolButton("全屏切换", "SetFullScreen()", 4);
// poCtrl.setMenubar(false);//隐藏菜单栏
// poCtrl.setOfficeToolbars(false);//隐藏Office工具栏
poCtrl.setTimeSlice(10);
poCtrl.setCaption("查看");//设置标题
poCtrl.setSaveFilePage("/office/save");//设置处理文件保存的请求方法
//打开word
poCtrl.webOpen("C:\\test.docx", OpenModeType.docRevisionOnly, "某某人");
map.put("pageoffice", poCtrl.getHtmlCode("PageOfficeCtrl1"));
return new ModelAndView("webapp/base/docView");
}
保存
@RequestMapping("/save")
public void saveFile(HttpServletRequest request, HttpServletResponse response){
FileSaver fs = new FileSaver(request, response);
fs.saveToFile("C:\\" + fs.getFileName());
fs.close();
}
前端渲染
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>查看</title>
<script type="text/javascript" src="/jquery.min.js"></script>
<script type="text/javascript" src="/pageoffice.js" id="po_js_main"></script>
</head>
<body>
<div style="width:1200px;height:800px;">
<#escape x as x?html>
<#noescape> ${pageoffice}
</#noescape>
</#escape>
</div>
<script>
function Save() {
document.getElementById("PageOfficeCtrl1").WebSave();
}
function SetFullScreen() {//全屏
document.getElementById("PageOfficeCtrl1").FullScreen = !document
.getElementById("PageOfficeCtrl1").FullScreen;
}
</script>
</body>
</html>