PageOffice 6 最简集成代码(VUE+Springboot)
本文描述了PageOffice产品在(VUE+Springboot)前后端分离的项目中如何集成调用。调用PageOffice打开文件的主要核心代码是:后端Springboot项目中第6步和前端VUE项目中第6步的代码,其他代码都属于环境配置代码。
假设开发环境电脑IP为:
192.168.1.100
后端Springboot项目
- 新建Springboot后端项目:springboot-back,在配置文件application.properties中设置项目端口为:8081
server.port=8081
- 在您项目的pom.xml中通过下面的代码引入PageOffice依赖。pageoffice.jar已发布到Maven中央仓库 (opens new window),建议使用最新版本。
如果使用Tomcat10及以上版本,使用下面的pom.xml配置
<dependency>
<groupId>com.zhuozhengsoft</groupId>
<artifactId>pageoffice</artifactId>
<version>6.0.0.8</version>
</dependency>
如果使用Tomcat9及以下的版本,使用下面的pom.xml配置
<dependency>
<groupId>com.zhuozhengsoft</groupId>
<artifactId>pageoffice</artifactId>
<version>6.0.0.8-javax</version>
</dependency>
新建一个pageoffice文件夹,用来存放PageOffice的系统文件(如license.lic、客户端安装包等),比如windows环境下创建:D:/pageoffice,linux环境下创建:/root/pageoffice
拷贝pageoffice客户端安装程序到上一步创建的pageoffice文件夹下。
- 客户端是windows环境:拷贝posetup_6.x.x.x.exe到pageoffice文件夹下;
- 客户端是国产操作系统环境:拷贝对应芯片的PageOffice客户端deb安装包到pageoffice文件夹下;
- 打开springboot-back项目的配置文件application.properties,添加一个posyspath变量,值为上一步创建的pageoffice文件夹的路径
server.port=8081
posyspath=D:/pageoffice
- 在您项目的启动类Application类中添加一项@Bean配置,此为PageOffice服务器端的必要配置,代码如下:
@Value("${posyspath}")
private String poSysPath;
@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("/poclient");
srb.addUrlMappings("/pageoffice.js");
srb.addUrlMappings("/sealsetup.exe");
return srb;
}
- 新建Controller并调用PageOffice在线打开D盘根目录下的test.docx文件,例如DocumentController代码如下:
@RestController
@RequestMapping(value = "/doc")
public class DocumentController {
@RequestMapping(value="/openFile")
public String openFile(HttpServletRequest request) {
PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
poCtrl.setSaveFilePage("saveFile");
//webOpen的第一个参数支持能够输出下载文件的Url相对地址或者文件在服务器上的磁盘路径两种方式
//查看详细,请在本站搜索“PageOffice属性或方法中涉及到的URL路径或磁盘路径的说明”
poCtrl.webOpen("D:\\test.docx", OpenModeType.docNormalEdit, "张三");
return poCtrl.getHtmlCode();
}
@RequestMapping("/saveFile")
public void saveFile(HttpServletRequest request, HttpServletResponse response) {
FileSaver fs = new FileSaver(request, response);
fs.saveToFile("D:\\" + fs.getFileName());
fs.close();
}
}
前端Vue项目
新建Vue前端项目:vue-front
Vue配置代理。
devServer: {
proxy: {
'/api': { // "/api"对应后端项目"http://192.168.1.100:8081"地址
target: 'http://192.168.1.100:8081',
ws: true,
changeOrigin: true,
pathRewrite: {
'^/api': ''
}
},
}
}
- 在您Vue项目的index.html中引用后端项目中的pageoffice.js文件(后端项目中pageofficeRegistrationBean配置了pageoffice.js文件的访问地址)。
注意
pageoffice.js文件必须来自于后端项目。
<script type="text/javascript" src="/api/pageoffice.js"></script>
- 新建一个Vue页面:src/views/DocView.vue,用来显示在线打开的文档。
<template>
<div class="doc">
演示: 文档<br/><br/>
<!-- 此div用来加载PageOffice客户端控件 -->
<div style="width:auto; height:700px;" v-html="poHtmlCode" ></div>
</div>
</template>
<script>
const axios=require('axios');
export default {
name: 'DocView',
data(){
return {
poHtmlCode: '',
}
},
created: function(){
// 请求后端项目打开文件的controller方法
axios.post("/api/doc/openFile").then((response) => {
this.poHtmlCode = response.data;
}).catch(function (err) {
console.log(err)
})
},
methods:{
OnPageOfficeCtrlInit() {
// PageOffice的初始化事件回调函数,您可以在这里添加自定义按钮
},
AfterDocumentOpened(){
// PageOffice的文档打开后事件回调函数
},
BeforeDocumentSaved() {
// PageOffice的文档保存前事件回调函数
},
AfterDocumentSaved() {
// PageOffice的文档保存后事件回调函数
}
},
mounted: function () {
// 以下的为PageOffice事件的回调函数,名称不能改,否则PageOffice控件调用不到
window.OnPageOfficeCtrlInit = this.OnPageOfficeCtrlInit;
window.AfterDocumentOpened = this.AfterDocumentOpened;
window.BeforeDocumentSaved = this.BeforeDocumentSaved;
window.AfterDocumentSaved = this.AfterDocumentSaved;
}
}
</script>
- 配置DocView.vue的访问路由
const routes = [
// 其他路由配置项...
// 下面添加DocView.vue的路由
,
{
path: '/showDoc',
name: 'doc',
component: () => import('../views/DocView.vue')
}
]
- 在您要打开文件的Vue页面(比如首页)添加一个超链接,点击超链接调用POBrowser对象的openWindow方法,弹出新浏览器窗口访问DocView.vue在线打开文件,代码如下:
<a href="javascript:POBrowser.openWindow('/showDoc','width=1150px;height=900px;');">
在线打开文档
</a>
- 启动springboot-back和vue-front项目,点击“在线打开文档”超链接,查看在线打开编辑保存Office文件的效果。
参考链接:PageOffice最简集成代码(VUE+Springboot)
PageOffice 6 最简集成代码(VUE+Springboot)的更多相关文章
- vue+springboot前后端分离实现单点登录跨域问题处理
最近在做一个后台管理系统,前端是用时下火热的vue.js,后台是基于springboot的.因为后台系统没有登录功能,但是公司要求统一登录,登录认证统一使用.net项目组的认证系统.那就意味着做单点登 ...
- Vue+SpringBoot+Mybatis的简单员工管理项目
本文项目参考自:https://github.com/boylegu/SpringBoot-vue 为了完成此项目你需要会springBoot,mybatis的一些基本操作 运行界面 第一步:搭建前端 ...
- docker-compose 部署 Vue+SpringBoot 前后端分离项目
一.前言 本文将通过docker-compose来部署前端Vue项目到Nginx中,和运行后端SpringBoot项目 服务器基本环境: CentOS7.3 Dokcer MySQL 二.docker ...
- vue+springboot上传和下载附件功能
https://blog.csdn.net/qq_35867245/article/details/84325385 上传附件(服务端代码) 第一步:在application.yml中配置附件要上传的 ...
- vue-multi-module【多模块集成的vue项目,多项目共用一份配置,可以互相依赖,也可以独立打包部署】
基于 vue-cli 2 实现,vue 多模块.vue多项目集成工程 Github项目地址 : https://github.com/BothEyes1993/vue-multi-module 目标: ...
- vue springboot利用easypoi实现简单导出
vue springboot利用easypoi实现简单导出 前言 一.easypoi是什么? 二.使用步骤 1.传送门 2.前端vue 3.后端springboot 3.1编写实体类(我这里是dto, ...
- windows本地自动集成代码+SSH服务器配置
在windows环境下使用Jenkins自动集成代码 描述: 局域网电脑A是本地服务器,安全win7系统,安装了Jenkins:现在想让A成为测试服务器,需要隔一段时间从SVN里同步出最新的代码,供客 ...
- 游戏音频技术备忘 (五)Wwise Unreal Engine 集成代码浅析 二
AkAmbientSound类的实现 Unreal Engine提供了一个基本对象的构造器ObjectInitializer,一般来说用户创建的类总是拥有很多变量,因此 AkAmbientSound ...
- Shiro集成web环境[Springboot]-认证与授权
Shiro集成web环境[Springboot]--认证与授权 在登录页面提交登陆数据后,发起请求也被ShiroFilter拦截,状态码为302 <form action="${pag ...
- Shiro集成web环境[Springboot]-基础使用
Shiro集成web环境[Springboot] 1.shiro官网查找依赖的jar,其中shiro-ehcache做授权缓存时使用,另外还需要导入ehcache的jar包 <dependenc ...
随机推荐
- Python队列----queue
import queue # 官网文档:https://docs.python.org/3/library/queue.html a1 = queue.Queue() # 先进先出队列 a2 = qu ...
- 实验1产品原型设计-YHealth健康APP
一.实验题目:原型设计 二.实验目的:掌握产品原型设计方法和相应工具使用. 三.实验要求: (1)对比分析墨刀.Axure.Mockplus等原型设计工具的各自的适用领域及优缺点 --墨刀 适用领域: ...
- Pytorch-tensor的激活函数
1.激活函数 激活函数的作用是能够给神经网络加入一些非线性因素,使得神经网络可以更好地解决较为复杂的问题.因为很多问题都不是线性的,你只有给它加入一些非线性因素,就能够让问题更好的解决. 函数1:RE ...
- huggingface vit训练CIFAR10数据集代码 ,可以改dataset训练自己的数据
上代码,使用hugging face fineturn vit模型 自己写的代码 from transformers import ViTImageProcessor, ViTForImageClas ...
- 力扣1668(java&python)-最大重复子字符串(简单)
题目: 给你一个字符串 sequence ,如果字符串 word 连续重复 k 次形成的字符串是 sequence 的一个子字符串,那么单词 word 的 重复值为 k .单词 word 的 最大重复 ...
- 力扣19(java&python)-删除链表的倒数第 N 个结点(中等)
题目: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例2: 输入:head = ...
- Web3开发者技术选型:前端视角(next.js)
引言 在现代Web开发的世界中,Web3技术的兴起为前端开发者开辟了新的可能性.Web3技术主要指的是建立在区块链基础上的分布式网络,使用户能够通过智能合约和去中心化应用(DApps)直接交互,而无需 ...
- 加入自定义块对fashion_mnist数据集进行softmax分类
在之前,我们实现了使用torch自带的层对fashion_mnist数据集进行分类.这次,我们加入一个自己实现的block,实现一个四层的多层感知机进行softmax分类,作为对"自定义块& ...
- 阿里云RemoteShuffleService新功能:AQE和流控
简介:阿里云EMR自2020年推出Remote Shuffle Service(RSS)以来,帮助了诸多客户解决Spark作业的性能.稳定性问题,并使得存算分离架构得以实施.为了更方便大家使用和扩展 ...
- Redis消息队列发展历程
简介:Redis是目前最受欢迎的kv类数据库,当然它的功能越来越多,早已不限定在kv场景,消息队列就是Redis中一个重要的功能.Redis从2010年发布1.0版本就具备一个消息队列的雏形,随着1 ...