JasperReports: создание водяного знака с фоновой полосой

Я пытаюсь понять, как настроить водяной знак для моего JasperReport, используя чистую Java (программно создав JasperDesign сам).

Скажем, у меня есть файл изображения для моего водяного знака, например:

String imageFileUri = "/some/url/MyWatermark.jpg";

Теперь я хочу добавить фоновую полосу к своему JasperDesign, которая будет накладывать изображение MyWatermark.jpg на каждую страницу моего отчета. У меня есть несколько строк «стартового кода», но после этого я рисую пробел. Я искал высоко и низко примеры кода, но не могу найти.

JRDesignBand backgroundBand = new JRDesignBand();
backgroundBand.setHeight(842);
backgroundBand.setWidth(595);

// ...???

Заранее спасибо за любую ясность здесь.


person IAmYourFaja    schedule 02.12.2011    source источник


Ответы (1)


Для решения этой проблемы мы можем использовать элемент JRDesignImage. находится в Background Band.

Пример:

JasperDesign jasperDesign = new JasperDesign();

//Some code to filling bands .....

JRDesignBand band = new JRDesignBand();
band.setHeight(200);

//The expression must contain the double quotes!!! 
//This is a analogue of <imageExpression><![CDATA["watermark.png"]]></imageExpression>
String imgPath = "\"watermark.png\"";

JRDesignExpression expression = new JRDesignExpression();
expression.setText(imgPath);

JRDesignImage image = new JRDesignImage(jasperDesign);
image.setX(45);
image.setY(55);
image.setWidth(165);
image.setHeight(40);
//We can use another scaling mode
image.setScaleImage(ScaleImageEnum.FILL_FRAME);
image.setExpression(expression);

//Adds image to the band
band.addElement(image);

//Adds band as background 
jasperDesign.setBackground(band);
person Alex K    schedule 03.12.2011
comment
Великолепный! Большое тебе спасибо! - person IAmYourFaja; 03.12.2011