因Flash不能用了,所以导致项目的在线预览功能。在网上找了很久,很多都是收费,后来找到了KKFileView。官网也有非常详细的介绍,而且拿到项目修修改改就可以用了,很方便;
官网地址:https://kkfileview.keking.cn/zh-cn/index.html
功能公共演示界面:https://file.keking.cn/index
项目代码:https://gitee.com/kekingcn/file-online-preview
项目部署
直接在官网进行下载源码,进行maven打包,在server下target中找到压缩包,上传到服务器,进行解压,解压后进入bin目录启动startup.sh就可以了
在我使用的过程中,基本都是通过官网文档解决的。
不过我需要在网页进行禁止复制等一些限制,虽然在前台无法避免所有的人,可是对一些查看文员来说已经足够了。
我在官网文档开始没有找到相关资料,后来在代码Issuse中发现了;
https://gitee.com/kekingcn/file-online-preview/issues/I2B2X2
可是这个在我这里解决docx、doc格式,不能解决Excel转换HTML页面禁止复制和图片转换后不允许进行拖拽;
特此来记录一下:
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窗口
console.log(document.getElementsByTagName('img'));
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>");