Redian新闻
>
Vue+SpringBoot 集成 PageOffice 实现在线编辑Word、excel文档

Vue+SpringBoot 集成 PageOffice 实现在线编辑Word、excel文档

公众号新闻

点击上方“芋道源码”,选择“设为星标

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 

来源:blog.csdn.net/qq_44306545/

article/details/127749139


说明:

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

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

一、环境要求

前端Vue项目:Node.js10及以上版本(当前集成方式不支持vue3,原因是vue3不兼容ie。

vue3集成pageoffice参考这个链接:

  • https://blog.csdn.net/qq_44306545/article/details/127764411

后端Springboot项目:Intelij IDEA、jdk1.8及以上版本

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud
  • 视频教程:https://doc.iocoder.cn/video/

二、前端项目

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中配置代理

devServer: {
        proxy: {
        '/api': {
          target: 'http://localhost:8081/samples-springboot-back'//"/api"对应后端项目"http://localhost:8081/samples-springboot-back"地址 
          ws: true,
          changeOrigin: true// 允许跨域
          pathRewrite: {
           '^/api'''   // 标识替换,使用 '/api' 代替真实的接口地址
          }
        }
      }
    }

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

<template>
 <div class="Word">
  <div style="height: 800px; width: auto" v-html="poHtmlCode" />
 </div>
</template>
<script>
const axios = require("axios");
export default {
  name"Word",
  data() {
    return {
      poHtmlCode"",
    };
  },
  createdfunction ({
    axios
      .post("/api/SimpleWord/Word")
      .then((response) => {
        this.poHtmlCode = response.data;
      })
      .catch(function (err{
        console.log(err);
      });
  },
  methods: {
    //控件中的一些常用方法都在这里调用,比如保存,打印等等
    /**
     * Save()方法是/api/SimpleWord/Word这个后台controller中PageOfficeCtrl控件通过poCtrl.addCustomToolButton定义的方法,除了保存还有另存到本地、打印等功能。
     */

    Save() {
      document.getElementById("PageOfficeCtrl1").WebSave();
    }
  },
  mountedfunction ({
    // 将PageOffice控件中的方法通过mounted挂载到window对象上,只有挂载后才能被vue组件识别
    window.Save = this.Save;
  },
};
</script>

三、后端项目

1.在pom中添加pageoffice依赖

<dependency>
    <groupId>com.zhuozhengsoft</groupId>
    <artifactId>pageoffice</artifactId>
    <version>5.4.0.3</version>
</dependency>

2.在启动类中配置servlet bean,poSysPath是在properites中配置的磁盘路径(注意:pageoffice的poserver.zz等这些请求不要拦截,get和post请求都放出来)

@Bean
public ServletRegistrationBean pageofficeRegistrationBean() {
    com.zhuozhengsoft.pageoffice.poserver.Server poserver = new com.zhuozhengsoft.pageoffice.poserver.Server();
    poserver.setSysPath(poSysPath);//设置PageOffice注册成功后,license.lic文件存放的目录
    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;
}

3.打开文件的controller(webopen第一个参数是当前文件的磁盘路径,磁盘路径必须反向双斜杠)。

setServerPage和setSaveFilePage中的api是前端代理,前后端分离项目必须配置代理

@RestController
@RequestMapping(value = "/SimpleWord")
public class SimpleWordController {
 
        @RequestMapping(value="/Word")
        public String showWord(HttpServletRequest request) {
 
            PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
            poCtrl.setServerPage("/api/poserver.zz");//设置服务页面
            poCtrl.addCustomToolButton("保存""Save"1);
 
            poCtrl.setSaveFilePage("/api/SimpleWord/save");//设置保存方法的url
            //打开word
            poCtrl.webOpen("D:\\doc\\test.docx", OpenModeType.docNormalEdit, "张三");
            return  poCtrl.getHtmlCode("PageOfficeCtrl1");
        }
 
        @RequestMapping("save")
        public void save(HttpServletRequest request, HttpServletResponse response) {
 
            FileSaver fs = new FileSaver(request, response);
            fs.saveToFile("D:\\doc\\" + fs.getFileName());
            fs.close();
        }
 
 
    }

4.save保存文件

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

四、最终效果



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

已在知识星球更新源码解析如下:

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
SpringBoot 2 种方式快速实现分库分表,轻松拿捏!SpringBoot项目中使用缓存的正确姿势,太优雅了!《祖国万岁》&《花轿里的人》妻妾成群,不只在苏童笔下。。。。SpringBoot 整合 MinIO 实现视频的分片上传/断点续传(亲测可行)三分钟了解 SpringBoot 的启动流程数据可视化:基于 Echarts + SpringBoot 的动态实时大屏银行监管系统【源码】SpringBoot 快速实现IP地址解析SpringBoot + 规则引擎 URule,真的很强!Microsoft Surface Pro 3 i5-4gen/4g/128GB with keyboard【2023 Bellevue Neighborhood Walks】邻居们,一起和市执行长在Bellevue的街上走一走SpringBoot 中的自带工具类,开发效率增加一倍!告别繁琐:SpringBoot 拦截器与统一功能处理家乡有个摇滚歌手基于 SpringBoot 实现多租户架构:支持应用多租户部署和管理Bellevue测试无绳遛狗临时站点:Crossroads,Wilburton Hill,Wildwood各有一个SpringBoot 中的自带工具类,开发效率倍增!快试试用 API Key 来保护你的 SpringBoot 接口安全吧SpringBoot 调用外部接口的三种方式6种方式读取Springboot的配置SpringBoot 通用限流方案(VIP珍藏版)小说:兰欣与乌茶 20SpringBoot+Mybatis 如何实现流式查询,你知道吗?MacBook Pro 13in 2018 A1989 keep rebooting ( screen/battery/othe专注神经损伤和退行性疾病,NeuExcell神曦生物获超亿元Pre-A+轮融资|早起看早期SpringBoot 集成 EasyExcel 3.x 优雅实现 Excel 导入导出SpringBoot 插件化开发模式,强烈推荐!推荐35款 SpringBoot/SpringCloud 开源项目,附源码OmegaFold、EquBind、RELATION、BIMODAL…你都掌握了吗?一文总结生物制药必备经典模型(二)专注神经损伤和退行性疾病,NeuExcell神曦生物获超亿元Pre-A+轮融资|36氪首发公司新入职一位大佬,把SpringBoot项目启动时间从7分钟降到了40秒!SpringBoot 接口快速开发神器(接口可视化界面实现)SpringBoot 集成 Camunda 流程引擎,实现一套完整的业务流程微软放大招,Excel集成Python。。。2024川普还是拜登?
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。