- 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); } } } }