本文描述了PageOffice產品在Springboot項目中如何集成調用。(本示例使用了Thymeleaf模板引擎)
-
新建Springboot項目:pageoffice6-springboot2-simple
-
在您項目的pom.xml中通過下面的代碼引入PageOffice依賴。pageoffice.jar已發佈到Maven中央倉庫 (opens new window),建議使用最新版本。
如果使用Tomcat10及以上版本,使用下面的pom.xml配置
<dependency>
<groupId>com.zhuozhengsoft</groupId>
<artifactId>pageoffice</artifactId>
<version>6.0.0.11</version>
</dependency>
如果使用Tomcat9及以下的版本,使用下面的pom.xml配置
<dependency>
<groupId>com.zhuozhengsoft</groupId>
<artifactId>pageoffice</artifactId>
<version>6.0.0.11-javax</version>
</dependency>
-
新建一個pageoffice文件夾,用來存放PageOffice的系統文件(如license.lic、客戶端安裝包等),比如windows環境下創建:D:/pageoffice,linux環境下創建:/root/pageoffice
-
拷貝pageoffice客戶端安裝程序到上一步創建的pageoffice文件夾下。
- 客戶端是windows環境:拷貝posetup_6.0.0.11.exe到pageoffice文件夾下;
- 客戶端是國產操作系統環境:拷貝對應芯片的PageOffice客戶端deb安裝包到pageoffice文件夾下;
PageOffice客戶端安裝程序下載地址:https://gitee.com/pageoffice/pageoffice6-client/releases
- 打開springboot-back項目的配置文件application.properties,添加一個posyspath變量,值爲上一步創建的pageoffice文件夾的路徑
posyspath=D:/pageoffice
- 在您項目的啓動類Application類中添加一項@Bean配置,此爲PageOffice服務器端的必要配置,代碼如下:
@Value("${posyspath}")
private String poSysPath;
@Bean
public ServletRegistrationBean pageofficeRegistrationBean() {
com.zhuozhengsoft.pageoffice.poserver.Server poserver
= new com.zhuozhengsoft.pageoffice.poserver.Server();
poserver.setSysPath(poSysPath);//設置PageOffice註冊成功後,license.lic文件存放的目錄
ServletRegistrationBean srb = new ServletRegistrationBean(poserver);
srb.addUrlMappings("/poserver.zz");
srb.addUrlMappings("/poclient");
srb.addUrlMappings("/pageoffice.js");
srb.addUrlMappings("/sealsetup.exe");
return srb;
}
- 在D盤根目錄下準備一個有內容的test.docx文件,新建Controller並調用PageOffice在線打開此文件,例如SimpleWordController代碼如下:
@RestController
@RequestMapping(value = "/simpleWord")
public class SimpleWordController {
@RequestMapping(value="/openFile")
public String openFile(HttpServletRequest request) {
PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
poCtrl.setSaveFilePage("saveFile");
//webOpen的第一個參數支持能夠輸出下載文件的Url相對地址或者文件在服務器上的磁盤路徑兩種方式
//查看詳細,請在本站搜索“PageOffice屬性或方法中涉及到的URL路徑或磁盤路徑的說明”
poCtrl.webOpen("D:\\test.docx", OpenModeType.docNormalEdit, "張三");
request.setAttribute("poHtmlCode", poCtrl.getHtmlCode());
return "simpleWord";
}
@RequestMapping("/saveFile")
public void saveFile(HttpServletRequest request, HttpServletResponse response) {
FileSaver fs = new FileSaver(request, response);
fs.saveToFile("D:\\" + fs.getFileName());
fs.close();
}
}
- 爲上一步代碼中的openFile方法準備Thymeleaf模板:simpleWord.html,代碼如下:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>最簡單的打開保存文件</title>
</head>
<body>
<div style="width:100%; height:800px;" th:utext="${poHtmlCode}"></div>
<script>
function Save() {
pageofficectrl.WebSave();
}
function OnPageOfficeCtrlInit() {
pageofficectrl.AddCustomToolButton("保存", "Save", 1);
}
</script>
</body>
</html>
- 在需要點擊超鏈接實現在線打開文件的頁面(比如:index.html)中添加pageoffice.js文件的引用。
<script type="text/javascript" src="/pageoffice.js"></script>
- 然後在頁面中添加一個超鏈接,點擊超鏈接調用POBrowser對象的openWindow方法,彈出新瀏覽器窗口訪問simpleWord/openFile在線打開文件,代碼如下:
<a href="javascript:POBrowser.openWindow('simpleWord/openFile','width=1150px;height=900px;');">
在線打開文檔
</a>
- 啓動項目,點擊“在線打開文檔”超鏈接,查看在線打開編輯保存Office文件的效果。