java - 如何以编程方式在 jasper 标题中设置图像

标签 java jasper-reports

我正在创建 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 文件):

Resulted pdf file

关于java - 如何以编程方式在 jasper 标题中设置图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17790434/

相关文章:

java - 使用 HttpUrlConnection 在没有中间证书的情况下建立 SSL 连接

java - 使用 Byte Buddy 将 DTO 转换为实体的注释

version-control - 如何在 JasperReports 中使用版本控制

java - 将 JasperReports 1.3.1 升级到 JasperReports 4.6

java - Jasper子报告错误

java - Simple Injector 中是否有相当于 Guice Providers 的东西?

java - 如何在我的maven项目中导入FFMPEG库?

jasper-reports - 贾斯珀报告 : How to create a parameter which takes multiple values as input

java - 将 Temp 路径指向 JasperReports 中的不同目录以编译报告

java - 在一个变量中引用方法的参数