PageOffice实现文件在线安全预览——禁止编辑、下载、复制等
实际应用中,很多时候不仅需要在线编辑文件,还需要在线安全预览文件,要求不能复制、下载、另存到本地等情况。pageoffice可以实现文件在线安全预览,禁止:编辑、复制、粘贴、右键菜单、选择、下载、另存、F12下载、PrintScreen拷屏等操作。
一、环境
前端:vue
后端:springboot 、pageoffice5.4.0.3
二、前端
Word.vue页面
后端定义一个打开文件后执行的事件。将这个事件定义的js函数在vue的mounted中挂载给window,执行禁止另存、打印、页面设置和打印预览的js
<template>
<div class="Word">
<div style="width:auto; height:700px;" v-html="poHtmlCode" >
</div>
</div>
</template>
<script>
const axios=require('axios');
export default{
name: 'Word',
data(){
return {
message: ' ',
poHtmlCode: '',
}
},
created: function(){
//由于vue中的axios拦截器给请求加token都得是ajax请求,所以这里必须是axios方式去请求后台打开文件的controller
axios.post("/api/ReadOnly/Word").then((response) => {
this.poHtmlCode = response.data;
}).catch(function (err) {
console.log(err)
})
},
methods:{
//控件中的一些常用方法都在这里调用,比如保存,打印等等
AfterDocumentOpened() {
document.getElementById("PageOfficeCtrl1").SetEnableFileCommand(4, false); //禁止另存
document.getElementById("PageOfficeCtrl1").SetEnableFileCommand(5, false); //禁止打印
document.getElementById("PageOfficeCtrl1").SetEnableFileCommand(6, false); //禁止页面设置
document.getElementById("PageOfficeCtrl1").SetEnableFileCommand(8, false); //禁止打印预览
}
},
mounted: function(){
// 将vue中的方法赋值给window
window.AfterDocumentOpened = this.AfterDocumentOpened;
}
}
</script>
三、后端
禁止选中和禁止右键同时设置,实现禁止复制的功能。OpenModeType.docReadOnly模式打开文件限制文件编辑。并且隐藏菜单栏、office工具栏和pageoffice自定义工具栏。前端和后端配合实现文件在线安全预览,防止文件内容泄露
@RestController
@RequestMapping(value = "/ReadOnly")
public class ReadOnlyController {
@RequestMapping(value = "/Word")
public String showWord(HttpServletRequest request) {
WordDocument wordDoc=new WordDocument();
wordDoc.setDisableWindowSelection(true);//禁止选中
wordDoc.setDisableWindowRightClick(true);//禁止右键
PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
poCtrl.setServerPage("/api/poserver.zz");//设置服务页面
poCtrl.setMenubar(false);//隐藏菜单栏
poCtrl.setOfficeToolbars(false);//隐藏Office工具条
poCtrl.setCustomToolbar(false);//隐藏自定义工具栏
poCtrl.setJsFunction_AfterDocumentOpened("AfterDocumentOpened");
//设置页面的显示标题
poCtrl.setCaption("演示:文件在线安全浏览");
//打开Word文档
poCtrl.setWriter(wordDoc);//此句必须
poCtrl.webOpen(D:\\doc\\ReadOnly\\test.doc", OpenModeType.docReadOnly, "张三");
return poCtrl.getHtmlCode("PageOfficeCtrl1");
}
}
四、效果
转载 https://blog.csdn.net/qq_44306545/article/details/128574459
PageOffice实现文件在线安全预览——禁止编辑、下载、复制等的更多相关文章
- ASP.NET Core2集成Office Online Server(OWAS)实现办公文档的在线预览与编辑(支持word\excel\ppt\pdf等格式)
Office Online Server是微软开发的一套基于Office实现在线文档预览编辑的技术框架(支持当前主流的浏览器,且浏览器上无需安装任何插件,支持word.excel.ppt.pdf等文档 ...
- [转发]ASP.NET Core2集成Office Online Server(OWAS)实现办公文档的在线预览与编辑(支持word\excel\ppt\pdf等格式)
转载自:https://www.cnblogs.com/Andre/p/9549874.html Office Online Server是微软开发的一套基于Office实现在线文档预览编辑的技术框架 ...
- 基于bootstrap的上传插件fileinput实现ajax异步上传功能(支持多文件上传预览拖拽)
首先需要导入一些js和css文件 ? 1 2 3 4 5 6 <link href="__PUBLIC__/CSS/bootstrap.css" rel="exte ...
- atitit.javascript js 上传文件的本地预览
atitit.javascript js 上传文件的本地预览 1. .URL.createObjectURL 1 1.1. 吊销所有使用 URL.createObjectURL 而创建的 URL,以 ...
- 解决vue、js 下载图片浏览器默认预览而不是下载
在网页上,如果我们下载的地址对应的是一个jpg文件,txt文件等,点击链接时,浏览器默认的是打开这些文件而不是下载,那么如何才能实现默认下载呢? 后端解决 这就是Content-Disposition ...
- axios 下载文件流或者预览在线pdf
问题: 后端返回文件流,前端使用axios下载或者在线预览 下载文件流 import axios from 'axios' // 设置响应类型为blob axios.get('/api/app/xxx ...
- [SWF]在线预览文档下载
写本文的缘由:领导有些项目文档需要审阅,网站上的文档只能在线预览,没有提供下载.开始用截屏的方式,可想而知这将会是多大的重复性劳动.所以研究了一下,发现可以曲线救国,所以在这里分享一下. 问题描述:这 ...
- JQuery获取图片大小并控制图片文件上传大小以及上图片文件时如何预览图片
首先我们来看效果图: 点击上传之后如下: 在这里我获取到文件的大小,并且如果超出我设定的大小,则禁止上传! 不多说,上代码:先看div布局: <div class="imageCont ...
- 基于unoconv的在线office预览
这几天在搞在线文档预览,网上查了几种方案, 第一种:使用google的在线预览 -> 国内被Q,pass 第二种:使用第三方的,比如:永中dcs -> 要钱,pass 第三种:先转换为pd ...
- office web apps 在线问答预览
最近在做项目时,需要用到在线文档预览,看过明道的一篇搭建office web apps服务的文章,但是由于时间的关系,没有仔细研究,这几天有时间,就拿出来研究了下,折腾了几天终于完成了部署,然后就搬过 ...
随机推荐
- RabbitMQ 11 死信队列
死信队列 概述 消息队列中的数据,如果迟迟没有消费者来处理,就会一直占用消息队列的空间. 比如抢车票的场景,用户下单高铁票之后,会进行抢座,然后再进行付款,但是如果用户下单之后并没有及时的付款,这张票 ...
- redis 简单整理——pipeline[十]
前言 简单整理一下pipeline. 正文 1)发送命令 2)命令排队 3)命令执行 4)返回结果 其中1)+4)称为Round Trip Time(RTT,往返时间). pipeline它能将一组R ...
- mmdeploy源码安装 (转换faster rcnn r50/yolox为tensorrt,并用mmdeploy sdk推理)
mmdeploy源码安装 (转换faster rcnn r50/yolox为tensorrt,并进行推理) 这个系列是一个随笔,是我走过的一些路,有些地方可能不太完善.如果有那个地方没看懂,评论区问就 ...
- 利用navicat实现excel转json
1.需要工具,Navicat Premium,网上有破解及安装教程 2.新建sqlite连接,选择新建sqlite3,如下图 3.接着点确定,如图 4. 5.
- ES6中新增的Set、Map两种数据结构
如果要用一句话来描述,我们可以说 Set是一种叫做集合的数据结构,Map是一种叫做字典的数据结构 什么是集合?什么又是字典? 集合是由一堆无序的.相关联的,且不重复的内存结构[数学中称为元素]组成的组 ...
- Hadoop HDFS 3.2的部署
之前写过HDFS 2.6的部署,最近项目中尝试使用最新的HDFS 3.2.1做离线存储,部署方式略有不同,所以这里再简单写一下,这里只涉及到存储因此不再配置yarn,只配置HDFS最基本的服务Name ...
- JVM简明笔记4:垃圾回收
1 垃圾回收相关算法 垃圾回收器首先要做的就是,判断一个对象是存活状态还是死亡状态,死亡的对象将会被标识为垃圾数据并等待收集器进行清除. 判断一个对象是否为死亡状态的常用算法有两个:引用计数器算法 . ...
- 力扣197(MySQL)-上升的温度(简单)
题目: 表: Weather 编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 id . 返回结果 不要求顺序 . 查询结果格式如下例. 解题思路: 方法一:使用窗口函数la ...
- Go Mysql Driver 集成 Seata-Golang 解决分布式事务问题
简介: 2020 年 4 月,我们开始尝试实现 go 语言的分布式事务框架 Seata-Golang.众所周知,Seata AT 模式以无业务代码侵入的特点,被广大开发者推崇.Java 版 Seata ...
- dotnet 警惕 C# 的 is var 写法
本文将和大家介绍 C# 语言设计里面,我认为比较坑的一个语法.通过 is var 的写法,会让开发者误以为 null 是不被包含的,然而事实是在这里的 var 是被赋予含义的,将被允许 null 通过 ...