[原创]国产UOS操作系统调用PageOffice在线编辑保存Office文档
自国家大力推广国产软件以来,统信软件的 UOS 操作系统在软硬件适配方面不断拓展,整个生态日渐完善,已经基本满足政府、企业等日常办公需求。在 Windows 系统环境下,PageOffice 产品积累了十多年的 Office 在线编辑研发经验和应用经验,现在针对 UOS 在线办公发布了支持国产操作系统的中间件产品PageOffice 国产版,能很好的支持龙芯,兆芯,飞腾,鲲鹏,X86,ARM 等不同 CPU 芯片架构的 UOS 操作系统。
PageOffice 产品调用金山 API 接口,启动本地的 WPS 办公应用程序在线打开文档,支持在 UOS 系统中调用 360、奇安信、UOS 浏览器等浏览器,在线打开 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>