• 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>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

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

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

    2.图片限制拖拽处理

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

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

    在 FileHandlerService 类 doActionConvertedFile 方法中添加HTML script ;
    // 添加sheet控制头
    sb.append("");
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

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

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

    presentationMode
    openFile
    print
    viewBookmark
    设置样式:display:none
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    secondaryPresentationMode
    secondaryOpenFile
    secondaryPrint
    secondaryDownload
    secondaryViewBookmark
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

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

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

    5.pdf 红章无法预览的问题修复方案

    src/main/resources/static/pdfjs/build/pdf.worker.js
    注释一行代码this.setFlags(_util.AnnotationFlag.HIDDEN)

        if (data.fieldType === "Sig") {
          data.fieldValue = null;
    
          //_this3.setFlags(_util.AnnotationFlag.HIDDEN);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    基于单片机的电子万年历设计
    Golang入门笔记(10)—— 闭包 closure
    互联网Java工程师面试题·Java 并发编程篇·第四弹
    Windows AD 组策略 安全加固
    Go 语言结构体验证详解:validate 标签与自定义规则
    MySQL - 服务器日志(慢查询日志、错误日志、通用查询日志、二进制日志、中继日志、元数据日志)
    数据分析:小红书2024年年轻人社交趋势洞察
    准备篇(二)Python 教程
    687 最长同值路径——Leetcode 天天刷(2022.9.2)【DFS】
    SDL2 播放音频数据(PCM)
  • 原文地址:https://blog.csdn.net/jxlhljh/article/details/127917397