一. 构建Sping Boot + Thymeleaf框架的项目(不再详述):
新建一个maven project项目:springboot-pageoffice-demo。
修改pom.xml配置,把项目配置为Spring Boot项目;
配置Thymeleaf:
添加Thymeleaf依赖,并在application.properties文件中添加Thymeleaf的配置;
二.集成PageOffice
1.官网http://www.zhuozhengsoft.com/dowm/下载一下完整的试用程序包,或者springboot 的示例。
2.
添加PageOffice的jar包(pageoffice4.5.0.12.jar)到本地Maven仓库,该jar位 于demo的“集成文件”夹中
--------------------------------------------------------------
1拷贝pageoffice4.5.0.12.jar到D盘根目录;
2启动CMD命令窗口,输入:D:回车,切换到D盘根目录下;
3输入:mvn install:install-file -DgroupId=com.zhuozhengsoft -DartifactId=pageoffice -Dversion=4.5.0.12 -Dpackaging=jar -Dfile=pageoffice4.5.0.12.jar
3.在pom.xml中添加PageOffice的依赖:
org.xerial
sqlite-jdbc
3.7.2
com.zhuozhengsoft
pageoffice
4.5.0.12
4.在application.properties文件中添加两个自定义参数配置,posyspath:指定一个磁盘目录用来存放PageOffice注册成功之后生成的license.lic文件;popassword:设置PageOffice自带印章管理程序的登录密码;以备给PageOffice的服务器端Servlet程序使用:
########################################################
###PageOffice
########################################################
posyspath=d:/lic/
popassword=111111
5.在DemoController中添加代码获取上一步在application.properties中定义的两个参数:
@Value("${posyspath}")
private String poSysPath;
@Value("${popassword}")
private String poPassWord;
6.在DemoController中添加PageOffice的Servlet的注册代码:
/**
* 添加PageOffice的服务器端授权程序Servlet(必须)
* @return
*/
@Bean
public ServletRegistrationBean servletRegistrationBean() {
com.zhuozhengsoft.pageoffice.poserver.Server poserver = new com.zhuozhengsoft.pageoffice.poserver.Server();
//设置PageOffice注册成功后,license.lic文件存放的目录
poserver.setSysPath(poSysPath);
ServletRegistrationBean srb = new ServletRegistrationBean(poserver);
srb.addUrlMappings("/poserver.zz");
srb.addUrlMappings("/posetup.exe");
srb.addUrlMappings("/pageoffice.js");
srb.addUrlMappings("/sealsetup.exe");
return srb;//
}
/**
* 添加印章管理程序Servlet(可选)
* @return
*/
@Bean
public ServletRegistrationBean servletRegistrationBean2() {
com.zhuozhengsoft.pageoffice.poserver.AdminSeal adminSeal = new com.zhuozhengsoft.pageoffice.poserver.AdminSeal();
adminSeal.setAdminPassword(poPassWord);//设置印章管理员admin的登录密码
//设置印章数据库文件poseal.db存放目录,该文件在当前demo的“集成文件”夹中
adminSeal.setSysPath(poSysPath);
ServletRegistrationBean srb = new ServletRegistrationBean(adminSeal);
srb.addUrlMappings("/adminseal.zz");
srb.addUrlMappings("/sealimage.zz");
srb.addUrlMappings("/loginseal.zz");
return srb;//
}
7.在DemoController的showWord方法中添加创建PageOfficeCtrl对象的代码,其中WebOpen方法的第一个参数是office文件在服务器端的磁盘路径,在此demo中暂时使用常量:d:\\test.doc(在d盘根目录下准备一个test.doc文件(不要用0字节的文件)以备测试)
@RequestMapping(value="/word", method=RequestMethod.GET)
public ModelAndView showWord(HttpServletRequest request, Map map){
//--- PageOffice的调用代码 开始 -----
PageOfficeCtrl poCtrl=new PageOfficeCtrl(request);
poCtrl.setServerPage("/poserver.zz");//设置授权程序servlet
poCtrl.addCustomToolButton("保存","Save",1); //添加自定义按钮
poCtrl.setSaveFilePage("/save");//设置保存的action
poCtrl.webOpen("d:\\test.doc",OpenModeType.docAdmin,"张三");
map.put("pageoffice",poCtrl.getHtmlCode("PageOfficeCtrl1"));
//--- PageOffice的调用代码 结束 -----
ModelAndView mv = new ModelAndView("Word");
return mv;
}
8.编写index.html页面
Chrome浏览器从42版本开始默认不启动插件,从45版本开始彻底关闭插件调用接口,网页中的任何插件(包括网银插件)都无法在Chrome浏览器中运行。FireFox浏览器在2016年年初发布消息,到2016年年底Firefox浏览器将关闭插件调用接口,所以从Firefox的52版本开始所有网页中的插件也都不能运行了。PageOfficeV4.0则采用POBrowser技术完美解决了这个问题,Chrome和Firefox都可以继续运行PageOffice进行在线Office文档操作。
(1)
注意:引用pageoffice.js文件的时候,id属性必须写。
Pageoffice.js文件和jquery.min.js在后端项目的根目录下。
(2)添加打开文档的js代码:
最简单的打开和保存
9.在Word.html中添加PageOffice客户端控件所在的div和js代码:
function Save() {
document.getElementById("PageOfficeCtrl1").WebSave();
}
10.在DemoController添加saveFile方法,用来接收PageOffice客户端上传的文件流并保存到服务器指定磁盘目录,在此demo中暂时使用常量:d:\\
@RequestMapping("/save")
public void saveFile(HttpServletRequest request, HttpServletResponse response){
FileSaver fs = new FileSaver(request, response);
fs.saveToFile("d:\\" + fs.getFileName());
fs.close();
运行demo项目,访问:http://localhost:8080/word即可在线打开、编辑和保存文件。
提示注册时,使用PageOffice V4.0 专业版试用序列号:CA1XB-MF7Y-12ST-PSBP2 注册即可。