KKFileView在线预览禁用复制右键图片保存等操作


一、需求背景

公司的运营平台,管理了一些如合同等内容,开始使用了kkfileView预览组件进行合同的预览,能查看,能下载,满合了日常需求,但现在需要对预览进行更严格一点的控制,需要做到只能让普通用户进行带水印查看,不让下载,连图片保存都不行,因此需要对kkfileView进行一些如打印成pdf,图片保存,右键复制限制等功能。

也看了些csdn上的解决方案文章,其中KKFileView在线预览初使用记录,主要解决不可复制等一些限制问题https://blog.csdn.net/qq_37637196/article/details/119108471
文章中的内容较符合要求,此文内容是转载了上面文章,备查使用,记录如下:

二、修改kkFileview

1.docx、doc文档不可复制、F12、右键、打印限制问题

在commonHeader.ftl文中添加

<#-- 设置浏览器打印为空白内容,防止打印 -->
<style>@media print{
    
    body{
    
    display:none}}</style>

<script language="Javascript">

    //禁用右键(防止右键查看源代码)
    window.oncontextmenu = function () {
    
     return false; }
    //禁止任何键盘敲击事件(防止F12和shift+ctrl+i调起开发者工具)
    window.onkeydown = window.onkeyup = window.onkeypress = function () {
    
    
        window.event.returnValue = false;
        return false;
    }
    //如果用户在工具栏调起开发者工具,那么判断浏览器的可视高度和可视宽度是否有改变,如有改变则关闭本页面
    var h = window.innerHeight, w = window.innerWidth;
    window.onresize = function () {
    
    
        if (h != window.innerHeight || w != window.innerWidth) {
    
    
            window.close();
            window.location = "about:blank";
        }
    }
    /**
     * 禁止右键和复制
     */
    document.oncontextmenu=new Function("event.returnValue=false");
    document.onselectstart=new Function("event.returnValue=false");
</script>

在file-online-preview/server/src/main/resources/static/pdfjs/web/viewer.html添加

<!--设置浏览器打印为空白内容,防止打印-->
    <style>@media print{
    
    body{
    
    display:none}}</style>

2.图片限制拖拽处理

	// 禁止浏览器默认拖拽,防止拖拽到新的tab窗口
    document.getElementsByTagName('img')[0].onmousedown = function(e){
    
    
        e.preventDefault();
    };

3.限制Excel转换后复制等操作

在 FileHandlerService 类 doActionConvertedFile 方法中添加HTML script ;
// 添加sheet控制头
sb.append("<script src=“js/jquery-3.0.0.min.js” type=“text/javascript”>");
sb.append("<script src=“js/excel.header.js” type=“text/javascript”>");
sb.append("<link rel=“stylesheet” href=“bootstrap/css/bootstrap.min.css”>");
// 在这添加下方代码;
// 添加禁止复制功能
            sb.append("<script language=\"Javascript\">\n" +
                    "\n" +
                    "    //禁用右键(防止右键查看源代码)\n" +
                    "    window.oncontextmenu = function () { return false; }\n" +
                    "    //禁止任何键盘敲击事件(防止F12和shift+ctrl+i调起开发者工具)\n" +
                    "    window.onkeydown = window.onkeyup = window.onkeypress = function () {\n" +
                    "        window.event.returnValue = false;\n" +
                    "        return false;\n" +
                    "    }\n" +
                    "    //如果用户在工具栏调起开发者工具,那么判断浏览器的可视高度和可视宽度是否有改变,如有改变则关闭本页面\n" +
                    "    var h = window.innerHeight, w = window.innerWidth;\n" +
                    "    window.onresize = function () {\n" +
                    "        if (h != window.innerHeight || w != window.innerWidth) {\n" +
                    "            window.close();\n" +
                    "            window.location = \"about:blank\";\n" +
                    "        }\n" +
                    "    }\n" +
                    "    /**\n" +
                    "     * 禁止右键和复制\n" +
                    "     */\n" +
                    "    document.οncοntextmenu=new Function(\"event.returnValue=false\");\n" +
                    "    document.onselectstart=new Function(\"event.returnValue=false\");\n" +
                    "</script>");

4.PDF模式禁用右上角菜单栏

如下,需要将pdf预览中的几个按钮隐藏,通过修改样式为display:none来处理
在这里插入图片描述
将viewer.html中的几个按钮的样式改成display:none即可

presentationMode
openFile
print
viewBookmark
设置样式:display:none

在这里插入图片描述
缩小屏幕宽度时还有几个也要设置
在这里插入图片描述

secondaryPresentationMode
secondaryOpenFile
secondaryPrint
secondaryDownload
secondaryViewBookmark

在这里插入图片描述

另外:也需要将前面的禁用复制、右键、f12等限制在viewer.html中加上

经过以上的限制后,能限制不懂开发者工具的人进行操作,但想要禁用开发者工具,前端的处理效果还是不怎么好,那就最好直接通过后台代码控制限制了

猜你喜欢

转载自blog.csdn.net/jxlhljh/article/details/127917397