国产麒麟操作系统调用PageOffice在线编辑保存WPS文档
国产麒麟操作系统调用 PageOffice 在线编辑保存 WPS 文档
自国家大力推广国产软件以来,麒麟软件的麒麟操作系统在软硬件适配方面不断拓展,整个生态日渐完善,已经基本满足政府、企业等日常办公需求。在 Windows 系统环境下,PageOffice 产品积累了十多年的 Office 在线编辑研发经验和应用经验,现在针对麒麟系统在线办公发布了支持国产操作系统的中间件产品PageOffice 国产版,能很好的支持龙芯,兆芯,飞腾,鲲鹏,X86,ARM 等不同 CPU 芯片架构的麒麟操作系统。
PageOffice 产品调用金山 API 接口,启动本地的 WPS 办公应用程序在线打开文档,支持在麒麟系统中调用 360、奇安信、火狐等浏览器,在线打开 doc 文档、电子表格、演示文稿等 Office 文件,进而实现嵌入式的文档编辑和控制。
对于开发人员来说,不需要额外的学习成本,就可以轻松掌握。此前集成了 Windows 版 PageOffice 的应用系统也几乎无需修改代码,平滑完成国产化版本的改版迁移。
PageOffice 国产版开发包结构
- Client:此目录下是 PageOffice 的客户端安装程序
- Samplesgc5:此文件夹是 PageOffice 的 Demo 程序
- Server:此目录下是集成 PageOffice 产品所需的 jar 包和配置文件
集成开发步骤(SSM)
-
将“Server” 文件夹中 pageoffice 的 jar 拷贝到您自己 Web 项目中 WEB-INF/lib 目录下;
-
参考“Server” 文件夹中的 web.xml 文件, 配置自己 Web 项目中的 web.xml, 也可以直接把下面的这段配置添加到自己的 web.xml 中;
<!-- PageOffice Begin --> <servlet> <servlet-name>poserver</servlet-name> <servlet-class>com.zhuozhengsoft.pageoffice.poserver.Server</servlet-class> </servlet> <servlet-mapping> <servlet-name>poserver</servlet-name> <url-pattern>/poserver.zz</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>poserver</servlet-name> <url-pattern>/posetup.exe</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>poserver</servlet-name> <url-pattern>/pageoffice.js</url-pattern> </servlet-mapping> <!-- PageOffice End -->
-
在后台 Controller 中编写代码调用 PageOffice
@RequestMapping(value="/openWord") public ModelAndView openWord(HttpServletRequest request){ PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request); poCtrl1.setServerPage("poserver.zz"); // 此行必须 poCtrl1.setSaveFilePage("xxxController/savefile");// 设置处理文件保存的 Controller 方法 poCtrl1.webOpen("doc/test.doc", OpenModeType.docNormalEdit, "张三");// 打开文件 request.setAttribute("poCtrl1", poCtrl1.getHtmlCode("PageOfficeCtrl1"));
<span class="hljs-type">ModelAndView</span> <span class="hljs-variable">mv</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">ModelAndView</span>(<span class="hljs-string">"Word"</span>); <span class="hljs-keyword">return</span> mv;
}
- 在视图 html 代码中获取第 3 步 request 对象中的 poCtrl1,显示文档编辑区域
<div style="height:700px;width:auto;"> ${pdfCtrl1} </div>
集成开发步骤(SpringBoot)
-
如果在自己项目的根目录下创建 lib 文件夹,将“Server” 文件夹中 pageoffice 的 jar 拷贝到此 lib 目录下,那么 pom.xml 添加下面代码(注意修改为自己使用的 pageoffice 的 jar 包版本号):
<dependency> <groupId>com.zhuozhengsoft</groupId> <!-- 自定义 --> <artifactId>pageoffice</artifactId> <!-- 自定义 --> <version>5.2.0.1</version> <!-- 自定义 --> <scope>system</scope> <!--system,类似 provided,需要显式提供依赖的 jar 以后,Maven 就不会在 Repository 中查找它 --> <!--${project.basedir} 为 springboot 内置属性 --> <systemPath>${project.basedir}/lib/pageoffice5.2.0.1.jar</systemPath> </dependency>
如果使用 mvn 命令安装 pageoffice 的 jar 包到本地仓库,那么 pom.xml 添加下面的代码即可:
<dependency> <groupId>com.zhuozhengsoft</groupId> <!-- 自定义 --> <artifactId>pageoffice</artifactId> <!-- 自定义 --> <version>5.2.0.1</version> <!-- 自定义 --> </dependency>
mvn 命令安装 pageoffice 的 jar 包到本地仓库方法,参考下面地址:
https://www.kancloud.cn/pageoffice_course_group/pageoffice_course/653878
-
添加下面的 PageOffice 的服务器端授权程序的 @Bean:
注意:poserver.setSysPath 设置为一个存在的目录路径
/**
* 添加 PageOffice 的服务器端授权程序 Servlet(必须)
* @return
*/
@Bean
public ServletRegistrationBean servletRegistrationBean() {
com.zhuozhengsoft.pageoffice.poserver.Server poserver = new com.zhuozhengsoft.pageoffice.poserver.Server();
poserver.setSysPath("d:/lic/");// 设置 PageOffice 注册成功后,license.lic 文件存放的目录
ServletRegistrationBean srb = new ServletRegistrationBean(poserver);
srb.addUrlMappings("/poserver.zz");
srb.addUrlMappings("/posetup.exe");
srb.addUrlMappings("/pageoffice.js");
return srb;
}
- 在后台 Controller 中编写代码调用 PageOffice
@RequestMapping(value="/openWord")
public ModelAndView openWord(HttpServletRequest request){
PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
poCtrl1.setServerPage("poserver.zz"); // 此行必须
poCtrl1.setSaveFilePage("xxxController/savefile");// 设置处理文件保存的 Controller 方法
poCtrl1.webOpen("doc/test.doc", OpenModeType.docNormalEdit, "张三");// 打开文件
request.setAttribute("poCtrl1", poCtrl1.getHtmlCode("PageOfficeCtrl1"));
<span class="hljs-type">ModelAndView</span> <span class="hljs-variable">mv</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">ModelAndView</span>(<span class="hljs-string">"Word"</span>);
<span class="hljs-keyword">return</span> mv;
}
- 在视图 html 代码中获取第 3 步 request 对象中的 poCtrl1,显示文档编辑区域
<div style="height:700px;width:auto;">
${pdfCtrl1}
</div>