...
类型 | 对象 | 事件 |
---|---|---|
ServerSide | spreadsheetReport | onBeforeOutput |
代码块 | ||||||
---|---|---|---|---|---|---|
| ||||||
//类型:ServerSide 对象:spreadsheetReport 事件:onBeforeOutput var Color = Packages.java.awt.Color; var Font = Packages.java.awt.Font; var Graphics = Packages.java.awt.Graphics; var BufferedImage = Packages.java.awt.image.BufferedImage; var BufferedOutputStream = Packages.java.io.BufferedOutputStream; var FileOutputStream = Packages.java.io.FileOutputStream; var JPEGCodec = Packages.com.sun.image.codec.jpeg.JPEGCodec; var JPEGImageEncoder = Packages.com.sun.image.codec.jpeg.JPEGImageEncoder; var ImageIO = Packages.javax.imageio.ImageIO; var ByteArrayOutputStream = Packages.java.io.ByteArrayOutputStream; var Graphics2D = Packages.java.awt.Graphics2D; function main(spreadsheetReport) { //获取用户信息 var user = spreadsheetReport.remoteInvoke("UserService", "getCurrentUser", "[]"); var userObj = eval('(' + user + ')'); var usernName = userObj.result.name; var userAlias = userObj.result.alias; var str = usernName + "_" + userAlias; //设置水印文字内容:用户登录名_用户别名 var fontFamily = "宋体"; //水印字体 var imageWidth = 600; // 图片的宽度 var imageHeight = 1000; // 图片的高度 var fontWidth = 300; //文字宽度,倾斜直线上两个水印之间的间距 var workbook = spreadsheetReport.workbook; var count = workbook.getWorksheets().getCount(); //sheet页总数 var image = graphicsGeneration(str, imageWidth, imageHeight, fontFamily, fontWidth); for (var i = 0; i < count; i++) { var worksheet = workbook.getWorksheets().get(i); var type = spreadsheetReport.outputType; if (type == "PRINT" || type == "EXCEL2007" || type == "HTML" || type == "PDF" || type == "refresh") { //打印时 worksheet.setBackgroundImage(image); } else { worksheet.setBackgroundImage(null); } } } function graphicsGeneration(drawStr, imageWidth, imageHeight, fontFamily, fontWidth) { var yblank = 160; //设置纵向文字间隔 var fontSize = 15; //水印文字大小 var color = new Color(0xFF7F24, false); //设置水印文字颜色,第一个参数为16位RGB颜色值 var angle = 315; //设置水印倾斜角度 var image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB); var graphics = image.getGraphics(); graphics.setColor(Color.white); graphics.fillRect(0, 0, imageWidth, imageHeight); graphics.setColor(color); graphics.setFont(new Font(fontFamily, fontSize, fontSize)); var g2d = graphics; var transWidth = imageWidth + 400; g2d.translate(-transWidth, imageHeight); g2d.rotate(angle * Math.PI / 180); //设置水印倾斜角度 var x = 15; var y = yblank; for (var k = 0; k < 30; k++) { for (var j = 0; j < 12; j++) { graphics.drawString(drawStr, x, y); x += fontWidth; } x = 15; y += yblank; } var out = new ByteArrayOutputStream(); var flag = ImageIO.write(image, "jpg", out); var b = out.toByteArray(); return b; } |
...