html加水印及禁右键

  • A+
所属分类:Web前端
摘要

遇到的一个需求,记录一下


html加水印及禁右键

遇到的一个需求,记录一下

js加水印(网上找的)

function watermark(settings) {     //默认设置     var defaultSettings = {         watermark_txt:"text", 		watermark_x:1,//水印起始位置x轴坐标 		watermark_y:1,//水印起始位置Y轴坐标  window.body.clientHeight/2 		watermark_rows:20,//水印行数 		watermark_cols:20,//水印列数 		watermark_x_space:50,//水印x轴间隔 		watermark_y_space:50,//水印y轴间隔 		watermark_color:'#000000',//水印字体颜色 		watermark_alpha:0.2,//水印透明度 		watermark_fontsize:'120px',//水印字体大小 		watermark_font:'宋体',//水印字体 		watermark_width:window.innerWidth-200,//水印宽度 		watermark_height:450,//水印长度 		watermark_angle:25//水印倾斜度数     };     if (arguments.length === 1 && typeof arguments[0] === "object") {         var src = arguments[0] || {};         for (key in src) {             if (src[key] && defaultSettings[key] && src[key] === defaultSettings[key]) continue;             else if (src[key]) defaultSettings[key] = src[key];         }     }     var oTemp = document.createDocumentFragment();     //获取页面最大宽度     var page_width = Math.max(document.body.scrollWidth, document.body.clientWidth);     var cutWidth = page_width * 0.0150;     var page_width = page_width - cutWidth;     //获取页面最大高度     var page_height = Math.max(document.body.scrollHeight, document.body.clientHeight) + 450;     page_height = Math.max(page_height, window.innerHeight - 30);     //如果将水印列数设置为0,或水印列数设置过大,超过页面最大宽度,则重新计算水印列数和水印x轴间隔     if (defaultSettings.watermark_cols == 0 || (parseInt(defaultSettings.watermark_x + defaultSettings.watermark_width * defaultSettings.watermark_cols + defaultSettings.watermark_x_space * (defaultSettings.watermark_cols - 1)) > page_width)) {         defaultSettings.watermark_cols = parseInt((page_width - defaultSettings.watermark_x + defaultSettings.watermark_x_space) / (defaultSettings.watermark_width + defaultSettings.watermark_x_space));         defaultSettings.watermark_x_space = parseInt((page_width - defaultSettings.watermark_x - defaultSettings.watermark_width * defaultSettings.watermark_cols) / (defaultSettings.watermark_cols - 1));     }     //如果将水印行数设置为0,或水印行数设置过大,超过页面最大长度,则重新计算水印行数和水印y轴间隔     if (defaultSettings.watermark_rows == 0 || (parseInt(defaultSettings.watermark_y + defaultSettings.watermark_height * defaultSettings.watermark_rows + defaultSettings.watermark_y_space * (defaultSettings.watermark_rows - 1)) > page_height)) {         defaultSettings.watermark_rows = parseInt((defaultSettings.watermark_y_space + page_height - defaultSettings.watermark_y) / (defaultSettings.watermark_height + defaultSettings.watermark_y_space));         defaultSettings.watermark_y_space = parseInt(((page_height - defaultSettings.watermark_y) - defaultSettings.watermark_height * defaultSettings.watermark_rows) / (defaultSettings.watermark_rows - 1));     }     var x;     var y;     for (var i = 0; i < defaultSettings.watermark_rows; i++) {         y = defaultSettings.watermark_y + (defaultSettings.watermark_y_space + defaultSettings.watermark_height) * i;         for (var j = 0; j < defaultSettings.watermark_cols; j++) {             x = defaultSettings.watermark_x + (defaultSettings.watermark_width + defaultSettings.watermark_x_space) * j;             var mask_div = document.createElement('div');             mask_div.id = 'mask_div' + i + j;             mask_div.className = 'mask_div';             mask_div.appendChild(document.createTextNode(defaultSettings.watermark_txt));             //设置水印div倾斜显示             mask_div.style.webkitTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";             mask_div.style.MozTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";             mask_div.style.msTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";             mask_div.style.OTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";             mask_div.style.transform = "rotate(-" + defaultSettings.watermark_angle + "deg)";             mask_div.style.visibility = "";             mask_div.style.position = "absolute";             mask_div.style.left = x + 'px';             mask_div.style.top = y + 'px';             mask_div.style.overflow = "hidden";             mask_div.style.zIndex = "9999";             //让水印不遮挡页面的点击事件             mask_div.style.pointerEvents = 'none';             mask_div.style.opacity = defaultSettings.watermark_alpha;             mask_div.style.fontSize = defaultSettings.watermark_fontsize;             mask_div.style.fontFamily = defaultSettings.watermark_font;             mask_div.style.color = defaultSettings.watermark_color;             mask_div.style.textAlign = "center";             mask_div.style.width = defaultSettings.watermark_width + 'px';             mask_div.style.height = defaultSettings.watermark_height + 'px';             mask_div.style.display = "block";             oTemp.appendChild(mask_div);         };     };     document.body.appendChild(oTemp); } 

js禁右键(网上找的)

document.oncontextmenu = function(){return false} 

java

import java.io.*; import java.util.ArrayList; import java.util.List;   public class ExcelFileIO {      /**      * 加水印及禁右键      * @param folder :文件夹地址      * @param text :水印内容      */     public static void addWaterMark(String folder,String text){         try {             List<String> fileList = new ArrayList<String>();             getFilesList(new File(folder),fileList);             for (String url:fileList){                 fileWatermarkIO(url,text);                 fileForbiddenIO(url);             }         }catch (Exception e){             e.printStackTrace();         }     }      /**      * 禁右键      * @param folder 文件夹地址      */     public static void addForbidden(String folder){         try {             List<String> fileList = new ArrayList<String>();             getFilesList(new File(folder),fileList);             for (String url:fileList){                 fileForbiddenIO(url);             }         }catch (Exception e){             e.printStackTrace();         }     }       //读     public static String fileInput(String url) {         try {             FileInputStream fis = new FileInputStream(url);             BufferedInputStream bis = new BufferedInputStream(fis);             String content = null;             //字符缓冲区             byte[] buffer = new byte[10240];             int flag = 0;             while ((flag = bis.read(buffer)) != -1) {                 content += new String(buffer, 0, flag);             }             //关闭流             bis.close();             return content;         } catch (                 Exception e) {             e.printStackTrace();         }         return "";     }      //写     public static Boolean fileOutput(String url, String context){         Boolean result = false;         try {             FileOutputStream fos=new FileOutputStream(url);             BufferedOutputStream bos=new BufferedOutputStream(fos);             String content=context;             bos.write(content.getBytes(),0,content.getBytes().length);             bos.flush();             bos.close();             result = true;         } catch (Exception e) {             e.printStackTrace();         }         return result;     }       //加水印     public static Boolean fileWatermarkIO(String fileUrl, String waterMarkText) throws FileNotFoundException, UnsupportedEncodingException {         //读出内容         String textHtml = fileInput(fileUrl);         //水印的js         String context ="n<script type="text/javascript">n" +                 "window.onload=function(){n" +                 "var defaultSettings = {n" +                 "        watermark_txt:"" + waterMarkText + "",n" +                 "ttwatermark_x:(100),n" +                 "ttwatermark_y:(window.innerHeight/2-60),n" +                 "ttwatermark_rows:1,n" +                 "ttwatermark_cols:1,n" +                 "ttwatermark_x_space:50,n" +                 "ttwatermark_y_space:50,n" +                 "ttwatermark_color:'#000000',n" +                 "ttwatermark_alpha:0.2,n" +                 "ttwatermark_fontsize:'120px',n" +                 "ttwatermark_font:'宋体',n" +                 "ttwatermark_width:window.innerWidth-200,n" +                 "ttwatermark_height:450,n" +                 "ttwatermark_angle:25n" +                 "    };n" +                 "    if (arguments.length === 1 && typeof arguments[0] === "object") {n" +                 "        var src = arguments[0] || {};n" +                 "        for (key in src) {n" +                 "            if (src[key] && defaultSettings[key] && src[key] === defaultSettings[key]) continue;n" +                 "            else if (src[key]) defaultSettings[key] = src[key];n" +                 "        }n" +                 "    }n" +                 "    var oTemp = document.createDocumentFragment();n" +                 "    var page_width = Math.max(document.body.scrollWidth, document.body.clientWidth);n" +                 "    var cutWidth = page_width * 0.0150;n" +                 "    var page_width = page_width - cutWidth;n" +                 "    var page_height = Math.max(document.body.scrollHeight, document.body.clientHeight) + 450;n" +                 "    page_height = Math.max(page_height, window.innerHeight - 30);n" +                 "    var x;n" +                 "    var y;n" +                 "    for (var i = 0; i < defaultSettings.watermark_rows; i++) {n" +                 "        y = defaultSettings.watermark_y + (defaultSettings.watermark_y_space + defaultSettings.watermark_height) * i;n" +                 "        for (var j = 0; j < defaultSettings.watermark_cols; j++) {n" +                 "            x = defaultSettings.watermark_x + (defaultSettings.watermark_width + defaultSettings.watermark_x_space) * j;n" +                 "            var mask_div = document.createElement('div');n" +                 "            mask_div.id = 'mask_div' + i + j;n" +                 "            mask_div.className = 'mask_div';n" +                 "            mask_div.appendChild(document.createTextNode(defaultSettings.watermark_txt));n" +                 "            mask_div.style.webkitTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";n" +                 "            mask_div.style.MozTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";n" +                 "            mask_div.style.msTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";n" +                 "            mask_div.style.OTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";n" +                 "            mask_div.style.transform = "rotate(-" + defaultSettings.watermark_angle + "deg)";n" +                 "            mask_div.style.visibility = "";n" +                 "            mask_div.style.position = "absolute";n" +                 "            mask_div.style.left = x + 'px';n" +                 "            mask_div.style.top = y + 'px';n" +                 "            mask_div.style.overflow = "hidden";n" +                 "            mask_div.style.zIndex = "9999";n" +                 "            mask_div.style.pointerEvents = 'none';n" +                 "            mask_div.style.opacity = defaultSettings.watermark_alpha;n" +                 "            mask_div.style.fontSize = defaultSettings.watermark_fontsize;n" +                 "            mask_div.style.fontFamily = defaultSettings.watermark_font;n" +                 "            mask_div.style.color = defaultSettings.watermark_color;n" +                 "            mask_div.style.textAlign = "center";n" +                 "            mask_div.style.width = defaultSettings.watermark_width + 'px';n" +                 "            mask_div.style.height = defaultSettings.watermark_height + 'px';n" +                 "            mask_div.style.display = "block";n" +                 "            oTemp.appendChild(mask_div);n" +                 "        };n" +                 "    };n" +                 "    document.body.appendChild(oTemp);n" +                 "   }n" +                 "</script>";         //用标签锁定添加位置         String indexStr = "</body>";         //组装         String newText = textHtml.replace(indexStr,indexStr+context);         //读的时候出现的问题,需要去除         newText = newText.replaceAll("null","");         //清空源文件里的内容         new PrintWriter(fileUrl,"UTF-8");         //写入         return fileOutput(fileUrl,newText);     }      //禁用右键     public static Boolean fileForbiddenIO(String fileUrl) throws FileNotFoundException, UnsupportedEncodingException {         String textHtml = fileInput(fileUrl);         String context ="ndocument.oncontextmenu = function(){return false}";         String indexStr = "<script language="JavaScript">";         String newText;         if (textHtml.indexOf(indexStr)==-1){//如果没有script就添加             context ="n<script type="text/javascript">n" +                     "document.oncontextmenu = function(){return false}n"+                     "</script>";             indexStr = "</body>";             newText = textHtml.replace(indexStr,indexStr+context);         }else {             newText = textHtml.replace(indexStr,indexStr+context);         }         newText = newText.replaceAll("null","");         new PrintWriter(fileUrl,"UTF-8");         return fileOutput(fileUrl,newText);     }      //获取文件路径数组     public static void getFilesList(File filesFolder, List<String> fileNames){         if (!filesFolder.exists() || !filesFolder.isDirectory()) {             return;         }         String[] files = filesFolder.list();         for (int i = 0; i < files.length; i++) {             File file = new File(filesFolder, files[i]);             if (file.isFile()) {//是文件                 if (file.getName().endsWith(".htm")||file.getName().endsWith(".html")){//如果后缀符合储存                     fileNames.add(filesFolder + file.separator + file.getName());                 }             } else {//是目录                 getFilesList(file, fileNames);             }         }     } }