页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

代码块
linenumberstrue
collapsetrue
//类型: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;
}

...