前后端分离项目(vue+springboot)集成pageoffice实现在线编辑office文件

lhl77 lhl77     2023-03-16     468

关键词:

前后端分离项目下使用PageOffice原理图

集成步骤

前端 vue 项目

  1. 在您Vue项目的根目录下index.html中引用后端项目根目录下pageoffice.js文件。例如:
<script type="text/javascript" src="http://localhost:8081/samples-springboot-back/pageoffice.js"></script>
  1. 在您要打开文件的Vue页面,通过超链接点击或者按钮点击触发调用POBrowser打开一个新的Vue页面。比如通过超链接打开了一个新的Word.vue的空白页面,代码如下
<a href="javascript:POBrowser.openWindowModeless(\'SimpleWord/Word\',\'width=1150px;height=900px;\');">最简单在线打开保存Word文件</a>
=
  1. 在Word.vue页面中通过vue的create钩子函数通过axios去调用后端打开文件的controller。
created: function () 
    //由于vue中的axios拦截器给请求加token都得是ajax请求,所以这里建议用axios方式去请求后台打开文件的controller方法
    axios
      .post("/api/SimpleWord/Word")
      .then((response) => 
        this.poHtmlCode = response.data;
      )
      .catch(function (err) 
        console.log(err);
      );
  ,
  1. 在Word.vue页面中通过v-html标签将上一步axios请求返回的data输出到当前页面的某个div(这个div用来存放PageOffice控件)中,例如:
  <div  v-html="poHtmlCode" />
  • 1
  1. 在Word.vue页面的methods方法中添加PageOffice中常用的保存,打印等方法。例如:
methods: 
//控件中的一些常用方法都在这里调用,比如保存,打印等等
/**
 1. Save(),callParent()等方法都是/api/SimpleWord/Word这个后台controller中PageOfficeCtrl控件通过poCtrl.addCustomToolButton定义的方法。
 */
Save() 
  document.getElementById("PageOfficeCtrl1").WebSave();

,
  1. 在Word.Vue页面的mounted方法中将上一步的PageOffice中的自定义保存挂载到window对象上。比如:
mounted: function () 
// 将PageOffice控件中的方法通过mounted挂载到window对象上,只有挂载后才能被vue组件识别
window.Save = this.Save;
,

后端springboot项目

  • pom.xml中通过下面的代码引入PageOffice依赖。
<dependency>
     <groupId>com.zhuozhengsoft</groupId>   
  <artifactId>pageoffice</artifactId>   
  <version>5.3.0.4</version>
</dependency>
  • 启动类Application类中配置如下代码。
@Bean
   public ServletRegistrationBean pageofficeRegistrationBean()  
com.zhuozhengsoft.pageoffice.poserver.Server poserver = new com.zhuozhengsoft.pageoffice.poserver.Server();
/**如果当前项目是打成jar或者war包运行,强烈建议将license的路径更换成某个固定的绝
*对路径下,不要放当前项目文件夹下,为了防止每次重新发布项目导致license丢失问题。
 - 比如windows服务器下:D:/pageoffice,linux服务器下:/root/pageoffice
 */
 //设置PageOffice注册成功后,license.lic文件存放的目录
 poserver.setSysPath(poSysPath);
 //poSysPath可以在application.properties这个文件中配置,也可以直设置文件夹路径,比如:poserver.setSysPath("D:/pageoffice");
  ServletRegistrationBean srb = new ServletRegistrationBean(poserver);
  srb.addUrlMappings("/poserver.zz");
  srb.addUrlMappings("/posetup.exe");
  srb.addUrlMappings("/pageoffice.js");
  srb.addUrlMappings("/jquery.min.js");
  srb.addUrlMappings("/pobstyle.css");
  srb.addUrlMappings("/sealsetup.exe");
  return srb;
  
  • 新建Controller并调用PageOffice。例如:
 @RequestMapping(value="/Word")
 @ResponseBody
    public String showWord(HttpServletRequest request) 
        PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
        //设置服务页面,/api是前端vue项目的代理地址
        poCtrl.setServerPage("/api/poserver.zz");
        poCtrl.addCustomToolButton("保存", "Save", 1);
        poCtrl.addCustomToolButton("另存为", "SaveAs", 12);
        poCtrl.addCustomToolButton("打印设置", "PrintSet", 0);
        poCtrl.addCustomToolButton("打印", "PrintFile", 6);
        poCtrl.addCustomToolButton("全屏/还原", "IsFullScreen", 4);
        poCtrl.addCustomToolButton("-", "", 0);
        poCtrl.addCustomToolButton("关闭", "Close", 21);
        //设置保存方法的url
        poCtrl.setSaveFilePage("/api/SimpleWord/save");
        //打开word
        poCtrl.webOpen("/api/doc/SimpleWord/test.doc", OpenModeType.docNormalEdit, "张三");
        return  poCtrl.getHtmlCode("PageOfficeCtrl1");
    

常见使用问题

  • 参数传递
    比如 id:pobrowser方法的第一个参数url后面设置id
<a href="javascript:POBrowser.openWindowModeless(\'SimpleWord/Word?id=1\',\'width=1150px;height=900px;\');">最简单在线打开保存Word文件</a>
  • 1

Word.vue 页面获取pobrowser传递的id

this.id = this.$route.query.id;
  • 访问后端的时候需要 token 验证
    解决方案:
    第一步:使用pobrowser方法的第三个参数把token传递到弹出的vue 页面
let token1 = "Authorization:"+“token1”;  
<a href="javascript:POBrowser.openWindowModeless(\'SimpleWord/Word?id=1\',\'width=1150px;height=900px;\',token1);">最简单在线打开保存Word文件</a>

第二步:
word.vue页面获取pobrowser方法传递的token

let  token = window.external.UserParams;

第三步:

localStorage.setItem("Authorization",token);
转载:前后端分离项目(vue+springboot)集成pageoffice实现在线编辑office文件

springboot+vue前后端分离框架

项目介绍一款Java语言基于SpringBoot2.x、MybatisPlus、Vue、ElementUI、MySQL等框架精心打造的一款前后端分离框架,致力于实现模块化、组件化、可插拔的前后端分离架构敏捷开发框架,可用于快速搭建前后端分离后台管理系统&#... 查看详情

springboot+vue前后端分离框架

项目介绍一款Java语言基于SpringBoot2.x、MybatisPlus、Vue、ElementUI、MySQL等框架精心打造的一款前后端分离框架,致力于实现模块化、组件化、可插拔的前后端分离架构敏捷开发框架,可用于快速搭建前后端分离后台管理系统&#... 查看详情

springboot+vue前后端分离项目架构

SpringBoot+Vue前后端分离项目架构项目流程:1.SpringBoot后端项目1、新建一个SpringBoot工程,并添加项目开发过程中需要的相关依赖;2、数据库新建book数据表;--------------------------------Tablestructureforbook------------------- 查看详情

springboot+vue+antdesign前后端分离解决方案

项目介绍一款Java语言基于SpringBoot2.x、MybatisPlus、Vue、AntDesign、MySQL等框架精心打造的一款前后端分离框架,致力于实现模块化、组件化、可插拔的前后端分离架构敏捷开发框架,可用于快速搭建前后端分离后台管理系统&#... 查看详情

springboot+vue+antdesign前后端分离快速开发平台

项目介绍一款Java语言基于SpringBoot2.x、MybatisPlus、Vue、AntDesign、MySQL等框架精心打造的一款前后端分离框架,致力于实现模块化、组件化、可插拔的前后端分离架构敏捷开发框架,可用于快速搭建前后端分离后台管理系统&#... 查看详情

springboot+vue+antdesign前后端分离通用后台管理系统

项目介绍一款Java语言基于SpringBoot2.x、MybatisPlus、Vue、AntDesign、MySQL等框架精心打造的一款前后端分离框架,致力于实现模块化、组件化、可插拔的前后端分离架构敏捷开发框架,可用于快速搭建前后端分离后台管理系统&#... 查看详情

最棒的springboot+vue+antdesign前后端分离系统搭建教程

项目介绍一款Java语言基于SpringBoot2.x、MybatisPlus、Vue、AntDesign、MySQL等框架精心打造的一款前后端分离框架,致力于实现模块化、组件化、可插拔的前后端分离架构敏捷开发框架,可用于快速搭建前后端分离后台管理系统&#... 查看详情

vue+springboot前后端分离如何部署项目?

最简单办法,vue编译完后的文件放到后端容器内参考技术A直接上代码GitHub 参考技术Bhttps://blog.csdn.net/u013810234/article/details/89376466https://blog.csdn.net/u013810234/article/details/89392732 查看详情

springboot+vue前后端分离考试系统

作者主页:编程指南针 简介:Java领域优质创作者、CSDN博客专家 Java项目、简历模板、学习资料、面试题库、技术互助文末获取源码项目编号:BS-XX-104指南针考试系统是一个多角色在线培训考试系统,系统集成了... 查看详情

centos7/8系统下,使用jenkins实现springboot+vue前后端分离项目持续集成,一键编译打包跨设备部署,完整详细教学演示(代码片段)

Win10+CentOS7/8操作系统下,使用Jenkins实现SpringBoot+Vue前后端分离项目持续集成,从GitLab拉取代码,一键编译打包,跨服务器部署(阿里云服务器,物理服务器,虚拟机下亲测)一,安装配置J... 查看详情

centos7/8系统下,使用jenkins实现springboot+vue前后端分离项目持续集成,一键编译打包跨设备部署,完整详细教学演示(代码片段)

Win10+CentOS7/8操作系统下,使用Jenkins实现SpringBoot+Vue前后端分离项目持续集成,从GitLab拉取代码,一键编译打包,跨服务器部署(阿里云服务器,物理服务器,虚拟机下亲测)一,安装配置J... 查看详情

centos7/8系统下,使用jenkins实现springboot+vue前后端分离项目持续集成,一键编译打包跨设备部署,完整详细教学演示(代码片段)

Win10+CentOS7/8操作系统下,使用Jenkins实现SpringBoot+Vue前后端分离项目持续集成,从GitLab拉取代码,一键编译打包,跨服务器部署(阿里云服务器,物理服务器,虚拟机下亲测)一,安装配置J... 查看详情

前后端分离项目中springboot集成shiro实现权限控制

文章目录​​使用注解控制鉴权授权​​​​使用url配置控制鉴权授权​​​​表结构​​​​jar包依赖​​​​代码说明​​​​身份认证​​​​权限认证​​​​跨域问题解决​​​​登录验证不进行重定向改为设置http... 查看详情

阿里云(winserver)部署前后端分离项目(springboot+vue+android)

winserver部署前后端分离项目(springboot+vue+android)记录一下,也给小白一些参考首先得会开发springboot、vue、android项目才需要看本文一、前期准备1.轻量级应用服务器2.域名3.备案二、服务器部署springboot项目0.开发... 查看详情

前后端分离springboot+springcloudalibaba+vue一||项目架构简介

1、概述??本项目是一个基于SpringBoot2.x+vue2.X的分布式微服务架构项目,项目会不断进行迭代更新。该项目后端利用SpringCloudAlibaba微服务架构解决方案进行重构。项目前端利用vue框架开发,页面展示主要为pc端和手机端(微信公众... 查看详情

springboot+vue+shiro实现前后端分离权限控制

本文总结自实习中对项目的重构。原先项目采用Springboot+freemarker模版,开发过程中觉得前端逻辑写的实在恶心,后端Controller层还必须返回Freemarker模版的ModelAndView,逐渐有了前后端分离的想法,由于之前,没有接触过,主要参考... 查看详情

linux部署前后端分离项目(springboot+vue)nginx部署

title:Linux部署前后端分离项目(SpringBoot+Vue)【Nginx部署】date:2022-04-2617:27:50categories:Linuxtags:LinuxSpringBootVueNginx需求引入题外话:这种标题网上一搜全是,我为啥还写这篇文章,一是作为笔记,二是可能不同人遇到的问题不一样,... 查看详情

linux部署前后端分离项目(springboot+vue)nginx部署

title:Linux部署前后端分离项目(SpringBoot+Vue)【Nginx部署】date:2022-04-2617:27:50categories:Linuxtags:LinuxSpringBootVueNginx需求引入题外话:这种标题网上一搜全是,我为啥还写这篇文章,一是作为笔记,二是可能不同人遇到的问题不一样,... 查看详情