首页 > 其他分享 >转载:Vue+springboot集成PageOffice实现在线编辑Word、excel文档

转载:Vue+springboot集成PageOffice实现在线编辑Word、excel文档

时间:2023-02-14 09:59:09浏览次数:76  
标签:srb Vue Word springboot fs pageoffice api poserver

说明:

     PageOffice是一款在线的office编辑软件,帮助Web应用系统或Web网站实现用户在线编辑Word、Excel、PowerPoint文档。可以完美实现在线公文流转,领导批阅,盖章。可以给文件添加水印,在线安全预览防止用户下载和复制文件等

一、环境要求

二、前端项目 

  1.  在index.html页面引用后端项目(samples-springboot-back)根目录下的pageoffice.js      
    <script type="text/javascript" src="http://localhost:8081/samples-springboot-back/pageoffice.js"></script>
  2. 在vue.config.js中配置代理
    1. devServer: {
    2. proxy: {
    3. '/api': {
    4. target: 'http://localhost:8081/samples-springboot-back', //"/api"对应后端项目"http://localhost:8081/samples-springboot-back"地址
    5. ws: true,
    6. changeOrigin: true, // 允许跨域
    7. pathRewrite: {
    8. '^/api': '' // 标识替换,使用 '/api' 代替真实的接口地址
    9. }
    10. }
    11. }
    12. }
  3. 在index.vue页面添加一个按钮,通过点击事件调用POBrowser,第一个参数"SimpleWord/Word"是vue的路由。通过路由打开一个Word.vue页面
    POBrowser.openWindowModeless('SimpleWord/Word', 'width=1150px;height=900px;')
  4. 在Word.vue页面created中通过axios请求后台获取pageoffice控件(注意:后台返回string字符串,前端需要使用v-html解析)         这里给后台发请求的是axios,如果需要添加token可以在main.js中配置拦截器给请求添加token                             

         Word.vue页面,可以直接复制后修改url

  1. <template>
  2. <div class="Word">
  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: "Word",
  10. data() {
  11. return {
  12. poHtmlCode: "",
  13. };
  14. },
  15. created: function () {
  16. axios
  17. .post("/api/SimpleWord/Word")
  18. .then((response) => {
  19. this.poHtmlCode = response.data;
  20. })
  21. .catch(function (err) {
  22. console.log(err);
  23. });
  24. },
  25. methods: {
  26. //控件中的一些常用方法都在这里调用,比如保存,打印等等
  27. /**
  28. * Save()方法是/api/SimpleWord/Word这个后台controller中PageOfficeCtrl控件通过poCtrl.addCustomToolButton定义的方法,除了保存还有另存到本地、打印等功能。
  29. */
  30. Save() {
  31. document.getElementById("PageOfficeCtrl1").WebSave();
  32. }
  33. },
  34. mounted: function () {
  35. // 将PageOffice控件中的方法通过mounted挂载到window对象上,只有挂载后才能被vue组件识别
  36. window.Save = this.Save;
  37. },
  38. };
  39. </script>

 三、后端项目

  1. 在pom中添加pageoffice依赖
    1. <dependency>
    2. <groupId>com.zhuozhengsoft</groupId>
    3. <artifactId>pageoffice</artifactId>
    4. <version>5.4.0.3</version>
    5. </dependency>
  2. 在启动类中配置servlet bean,poSysPath是在properites中配置的磁盘路径(注意:pageoffice的poserver.zz等这些请求不要拦截,get和post请求都放出来)

     

    1. @Bean
    2. public ServletRegistrationBean pageofficeRegistrationBean() {
    3. com.zhuozhengsoft.pageoffice.poserver.Server poserver = new com.zhuozhengsoft.pageoffice.poserver.Server();
    4. poserver.setSysPath(poSysPath);//设置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. 打开文件的controller(webopen第一个参数是当前文件的磁盘路径,磁盘路径必须反向双斜杠)。setServerPage和setSaveFilePage中的api是前端代理,前后端分离项目必须配置代理

    1. @RestController
    2. @RequestMapping(value = "/SimpleWord")
    3. public class SimpleWordController {
    4. @RequestMapping(value="/Word")
    5. public String showWord(HttpServletRequest request) {
    6. PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
    7. poCtrl.setServerPage("/api/poserver.zz");//设置服务页面
    8. poCtrl.addCustomToolButton("保存", "Save", 1);
    9. poCtrl.setSaveFilePage("/api/SimpleWord/save");//设置保存方法的url
    10. //打开word
    11. poCtrl.webOpen("D:\\doc\\test.docx", OpenModeType.docNormalEdit, "张三");
    12. return poCtrl.getHtmlCode("PageOfficeCtrl1");
    13. }
    14. @RequestMapping("save")
    15. public void save(HttpServletRequest request, HttpServletResponse response) {
    16. FileSaver fs = new FileSaver(request, response);
    17. fs.saveToFile("D:\\doc\\" + fs.getFileName());
    18. fs.close();
    19. }
    20. }
  4. save保存文件

    1. @RequestMapping("save")
    2. public void save(HttpServletRequest request, HttpServletResponse response) {
    3. FileSaver fs = new FileSaver(request, response);
    4. fs.saveToFile("D:\\doc\\" + fs.getFileName());
    5. fs.close();
    6. }

四、最终效果

 

转载:https://blog.csdn.net/qq_44306545/article/details/127749139

标签:srb,Vue,Word,springboot,fs,pageoffice,api,poserver
From: https://www.cnblogs.com/lhl77/p/17118616.html

相关文章

  • springboot自动配置原理以及spring.factories文件的作用详解
    一、springboot自动配置原理先说说我们自己的应用程序中Bean加入容器的办法:packagecom.ynunicom.dc.dingdingcontractapp;importcom.alibaba.druid.spring.boot.au......
  • vue3watch
    vue3watch监视不到对象里面的oldValueref定义的基本类型响应式数据可以监视ref定义的多个基本类型响应式数据watch([name,age],(newV,oldV)=>{console.lo......
  • Vue的v-html指令说明,含案例
    v-html指令总结:1、作用:向指定节点中渲染包含html结构的内容2、与插值语法的区别:(1)v-html会替换掉节点中所有的内容,{{}}则不会(2)v-html可以识别html结构3、特别注意:(1......
  • vue原理:diff、模板编译、渲染过程等
    一、虚拟DOM:因为DOM操作非常消耗性能,在操作DOM时,会出现DOM的回流(Reflow:元素大小或者位置发生改变)与重绘(元素样式的改变)使DOM重新渲染。现在的框架Vue和React很少直接操作......
  • 前端发展史 vue介绍 vue的快速使用
    目录前端发展历史vue介绍vue快速使用之helloworld前端发展历史#1HTML(5)、CSS(3)、JavaScript(ES5、ES6):编写一个个的页面->给后端(PHP、Python、Go、Java)->后端......
  • Vue 局部过滤器和全局过滤器
    Vue过滤器总结:定义:对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理)语法:1、注册过滤器:Vue.filter(name,callback)或newVue{filters:{}}2、使用过滤......
  • 前端之——vue day01 入门
    DRF重点序列化类视图组件路由写法三大认证jwt一、前端发展历史1.HTML(5)、CSS(3)、JavaScript(ES5、ES6):编写一个个的页面->给后端(PHP、Python、Go、Java)->......
  • 前端之Vue框架:1、前端发展历史、Vue介绍和基本使用
    目录前端之Vue框架一、前端发展历史二、Vue的介绍的基本使用1、Vue简介2、Vue特点3、M-V-VM思想4、组件化开发、单页面开发5、版本选择6、引入方式7、补充8、简单使用前......
  • vue基础:前端发展历史、Vue的介绍的基本使用
    目录一、前端发展历史二、Vue的介绍的基本使用1、Vue简介2、Vue特点3、M-V-VM思想4、组件化开发、单页面开发5、版本选择6、引入方式7、补充8、简单使用一、前端发展历史......
  • vue-day01——前端发展历史、vue的介绍及基本使用
    目录前端之Vue框架一、前端发展历史二、Vue的介绍及基本使用1、Vue简介2、Vue特点3、M-V-VM思想4、组件化开发、单页面开发5、版本选择6、引入方式7、补充8、简单使用前......