一. 構建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 註冊便可。 |