当前位置:   article > 正文

Java实现在线打开编辑保存PPT_ppt 网页版java插件

ppt 网页版java插件

项目中有时会需要在线打开PPT并编辑保存。pageoffice可以完美调用本地office在线打开ppt文件,跟本地打开效果一样。还可以在线打开word、excel、pdf等文件,在线办公系统需要用到的功能基本都可以实现,效果还是挺不错的,集成也很简单。

一、环境 

前端:vue2

后端:springboot

二、集成步骤

1、后端pom.xml中导入依赖

  1. <!--Pageoffice的jar已经打包到maven中央仓库,用下面的方式即可引用 -->
  2. <dependency>
  3. <groupId>com.zhuozhengsoft</groupId>
  4. <artifactId>pageoffice</artifactId>
  5. <version>5.4.0.3</version>
  6. </dependency>

 2、启动类中配置pageoffice的授权程序bean(这些都要在权限框架中设置允许访问,不能拦截)

  1. @Bean
  2. public ServletRegistrationBean pageofficeRegistrationBean() {
  3. com.zhuozhengsoft.pageoffice.poserver.Server poserver = new com.zhuozhengsoft.pageoffice.poserver.Server();
  4. poserver.setSysPath("D:\\lic");//设置PageOffice注册成功后,license.lic文件存放的目录
  5. ServletRegistrationBean srb = new ServletRegistrationBean(poserver);
  6. srb.addUrlMappings("/poserver.zz");
  7. srb.addUrlMappings("/posetup.exe");
  8. srb.addUrlMappings("/pageoffice.js");
  9. srb.addUrlMappings("/jquery.min.js");
  10. srb.addUrlMappings("/pobstyle.css");
  11. srb.addUrlMappings("/sealsetup.exe");
  12. return srb;//
  13. }

3、前端vue的index.html页面引用后端根目录下的pageoffice.js

  1. <!--引用后端项目pageoffice_demo项目根目录下pageoffice.js文件,一定要在vue项目的index.html文件中引用此文件--->
  2. <script type="text/javascript" src="http://localhost:8086/pageoffice_demo/pageoffice.js"></script>

4、配置代理vue.config.js(transpileDependencies是为了解决ie和vue的兼容)

  1. module.exports = {
  2. devServer: {
  3. proxy: {
  4. '/api': {
  5. target: 'http://localhost:8086/pageoffice_demo', //"/api"对应后端项目"http://localhost:8086/pageoffice_demo"地址
  6. ws: true,
  7. changeOrigin: true, // 允许跨域
  8. pathRewrite: {
  9. '^/api': '' // 标识替换,使用 '/api' 代替真实的接口地址
  10. }
  11. }
  12. }
  13. },
  14. publicPath:"/",
  15. //node_modules里的依赖默认是不会编译的,会导致es6语法在ie中的语法报错,根据报错找到对应的文件夹指定该文件夹或文件需要编译.
  16. transpileDependencies: ["sockjs-client"]
  17. }

5、在index.vue页面添加按钮调用POBrowser.openWindowModeless打开OpenPPT.vue页面,通过axios请求后台打开ppt文件的接口 

index.vue页面

  1. <template>
  2. <div class="Word">
  3. <input type="button" value="打开ppt" @click="openPPT()"/>
  4. </div>
  5. </template>
  6. <script>
  7. const axios=require('axios');
  8. export default{
  9. name: 'Word',
  10. data(){
  11. return {
  12. }
  13. },
  14. methods:{
  15. openPPT() {
  16. //第一个参数是路由
  17. POBrowser.openWindowModeless('OpenPPT' , 'width=1200px;height=800px;');
  18. }
  19. },
  20. mounted: function(){
  21. }
  22. }
  23. </script>

OpenPPT.vue

  1. <template>
  2. <div class="PPT">
  3. <div style="height: 800px; width: auto" v-html="poHtmlCode" />
  4. </div>
  5. </template>
  6. <script>
  7. const axios=require('axios');
  8. export default{
  9. name: 'PPT',
  10. data(){
  11. return {
  12. poHtmlCode: '',
  13. }
  14. },
  15. created: function(){
  16. //由于vue中的axios拦截器给请求加token都得是ajax请求,所以这里必须是axios方式去请求后台打开文件的controller
  17. axios.post("/api/SimplePPT/PPT").then((response) => {
  18. this.poHtmlCode = response.data;
  19. }).catch(function (err) {
  20. console.log(err)
  21. })
  22. },
  23. methods:{
  24. //控件中的一些常用方法都在这里调用,比如保存,打印等等
  25. Save(){
  26. document.getElementById("PageOfficeCtrl1").WebSave();
  27. },
  28. Close() {
  29. window.external.close();
  30. }
  31. },
  32. mounted: function(){
  33. // 将vue中的方法赋值给window
  34. window.Save = this.Save;
  35. window.Close = this.Close;
  36. // 国产操作系统需要加载WPS插件 ppt文件是'x-wpp'
  37. if(navigator.userAgent.toLowerCase().indexOf("linux")>0){
  38. setTimeout(()=>document.getElementById('PageOfficeCtrl1').load('PageOfficeCtrl1','x-wpp','59'),1000);
  39. }
  40. }
  41. }
  42. </script>

6、后端打开打开ppt文件的controller,这块打开ppt用的是普通编辑模式,webopen第二个参数。还有另外一个只读模式,根据自己的需求选择

  1. @RestController
  2. @RequestMapping(value ="/SimplePPT")
  3. public class SimplePPTController {
  4. //获取doc目录的磁盘路径
  5. private String dir = GetDirPathUtil.getDirPath() + "static/doc/";
  6. @RequestMapping(value ="/PPT")
  7. @ResponseBody
  8. public String showPPT(HttpServletRequest request) {
  9. PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
  10. poCtrl.setServerPage("/api/poserver.zz");//设置服务页面
  11. //添加自定义按钮
  12. poCtrl.addCustomToolButton("保存", "Save", 1);
  13. poCtrl.addCustomToolButton("关闭", "Close", 21);
  14. //设置保存页面
  15. poCtrl.setSaveFilePage("/api/SimplePPT/save");//设置处理文件保存的请求方法
  16. //打开Word文档
  17. poCtrl.webOpen("D:\\doc\\SimplePPT\\test.ppt", OpenModeType.pptNormalEdit, "张三");
  18. return poCtrl.getHtmlCode("PageOfficeCtrl1");
  19. }
  20. @RequestMapping("save")
  21. public void save(HttpServletRequest request, HttpServletResponse response) {
  22. FileSaver fs = new FileSaver(request, response);
  23. fs.saveToFile("D:\\doc\\SimplePPT\\" + fs.getFileName());
  24. fs.close();
  25. }
  26. }

三、最后效果

右上角还可以选择全屏

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/952039
推荐阅读
相关标签
  

闽ICP备14008679号