一. 构建Sping Boot + Thymeleaf框架的项目(再也不详述):javascript
添加Thymeleaf依赖,并在application.properties文件中添加Thymeleaf的配置;html
二.集成PageOfficejava
1.官网http://www.zhuozhengsoft.com/dowm/下载一下完整的试用程序包,或者springboot 的示例。jquery
2.web
添加PageOffice的jar包(pageoffice4.5.0.12.jar)到本地Maven仓库,该jar位 于demo的“集成文件”夹中spring --------------------------------------------------------------sql 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的依赖:
<!-- 添加Sqlite依赖(可选:若是不须要使用印章功能的话,不须要添加此依赖)-->
<dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <version>3.7.2</version> </dependency> <!-- 添加PageOffice依赖(必须),添加依赖以前首先得将pageoffice4.5.0.12.jar添加到本地maven仓库,详细步骤见下表--> <dependency> <groupId>com.zhuozhengsoft</groupId> <artifactId>pageoffice</artifactId> <version>4.5.0.12</version> </dependency>
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<String,Object> 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)
<!-- 引用后端项目中的jquery.min.js和pageoffice.js文件 --> <script type="text/javascript" src="http://localhost:8080/jquery.min.js"></script> <script type="text/javascript" src=http://localhost:8080/pageoffice.js id="po_js_main"></script>
注意:引用 pageoffice.js 文件的时候, id 属性必须写。 Pageoffice.js 文件和jquery.min.js在后端项目的根目录下。 |
(2)添加打开文档的js代码:
<a href="javascript:POBrowser.openWindowModeless('http://localhost:8080/word','width=1200px;height=800px;');">最简单的打开和保存</a>
9.在Word.html中添加PageOffice客户端控件所在的div和js代码:
<div style="width:1000px;height:700px;" th:utext="${pageoffice}"> </div> <script type="text/javascript"> function Save() { document.getElementById("PageOfficeCtrl1").WebSave(); } </script>
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();
提示注册时,使用PageOffice V4.0 专业版试用序列号:CA1XB-MF7Y-12ST-PSBP2 注册便可。 |