我正在创建 JR 报告,但不使用 jrxml 模板。我需要知道如何使用 Java 代码设置报表标题中的图像?
...
//Title
band = new JRDesignBand();
band.setHeight(50);
textField = new JRDesignTextField();
textField.setBlankWhenNull(true);
textField.setX(0);
textField.setY(10);
textField.setWidth(515);
textField.setHeight(30);
textField.setHorizontalAlignment(HorizontalAlignEnum.CENTER);
textField.setStyle(normalStyle);
textField.setFontSize(22);
expression = new JRDesignExpression();
expression.setValueClass(java.lang.String.class);
expression.setText("$P{ReportTitle}");
textField.setExpression(expression);
band.addElement(textField);
jasperDesign.setTitle(band);
这里我需要添加图像而不是文本字段。我该怎么办?
最佳答案
您可以使用JRDesignImage设置图像的类。
示例:
public JasperDesign getJasperDesign() throws JRException {
JasperDesign jasperDesign = new JasperDesign();
jasperDesign.setName(DESIGN_NAME);
jasperDesign.setPageWidth(595);
jasperDesign.setPageHeight(842);
jasperDesign.setColumnWidth(515);
jasperDesign.setColumnSpacing(0);
jasperDesign.setLeftMargin(40);
jasperDesign.setRightMargin(40);
jasperDesign.setTopMargin(50);
jasperDesign.setBottomMargin(50);
JRDesignParameter parameter = new JRDesignParameter();
parameter.setName("ReportTitle");
parameter.setValueClass(java.lang.String.class);
jasperDesign.addParameter(parameter);
//Title band
JRDesignBand band = new JRDesignBand();
band.setHeight(250);
JRDesignTextField textField = new JRDesignTextField();
textField.setBlankWhenNull(true);
textField.setX(0);
textField.setY(10);
textField.setWidth(515);
textField.setHeight(30);
textField.setHorizontalAlignment(HorizontalAlignEnum.CENTER);
textField.setFontSize(22);
JRDesignExpression expression = new JRDesignExpression();
expression.setValueClass(java.lang.String.class);
expression.setText("$P{ReportTitle}");
textField.setExpression(expression);
band.addElement(textField);
// Image
String imgPath = "\"dukesign.jpg\"";
expression = new JRDesignExpression();
expression.setText(imgPath);
JRDesignImage image = new JRDesignImage(jasperDesign);
image.setX(45);
image.setY(55);
image.setWidth(130);
image.setHeight(104);
image.setScaleImage(ScaleImageEnum.FILL_FRAME);
image.setExpression(expression);
// Add image to Detail band
band.addElement(image);
jasperDesign.setTitle(band);
return jasperDesign;
}
结果将是(生成的 pdf 文件):
关于java - 如何以编程方式在 jasper 标题中设置图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17790434/