2013-07-22 81 views
0

我正在创建JR未使用报告jrxml模板。我需要知道如何设置Java代码的报告标题中的图像?如何以编程方式在jasper标题中设置图像

 
    
    ... 
    //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); 
 

这里,而不是文本字段我需要添加一个图像。我该怎么办?

回答

3

可以使用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

+0

感谢。它正在处理你的代码。在你的代码中,你错过了为表达式设置“表达式类”。 –

-1

我是这样的一个列表组件和数据集

<title> 
    <band height="70" splitType="Stretch"> 
     <staticText> 
      <reportElement uuid="30b7421d-058a-478d-9179-901273499bc4" x="74" y="0" width="420" height="55"/> 
      <textElement textAlignment="Center" markup="html"> 
       <font size="18"/> 
      </textElement> 
      <text><![CDATA[Report Header ]]></text> 
     </staticText> 
     <componentElement> 
      <reportElement uuid="f1f3b8ab-5dbf-4139-8033-d048a7e9896d" x="0" y="0" width="74" height="70"/> 
      <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical"> 
       <datasetRun subDataset="Agency_Image" uuid="6c1c4672-d9c2-4968-9265-0918ce1b8e91"> 
        <datasetParameter name="USER_AGENCY_CODE"> 
         <datasetParameterExpression><![CDATA[$P{USER_AGENCY_CODE}]]></datasetParameterExpression> 
        </datasetParameter> 
        <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 
       </datasetRun> 
       <jr:listContents height="70" width="74"> 
        <image onErrorType="Blank"> 
         <reportElement uuid="1c56b92b-ea0c-4f16-8402-df13d3f01317" x="0" y="0" width="46" height="46"/> 
         <imageExpression><![CDATA[$F{AGENCY_IMAGE}]]></imageExpression> 
        </image> 
       </jr:listContents> 
      </jr:list> 
     </componentElement> 
     <textField> 
      <reportElement uuid="9d151874-7f50-4987-a89f-a183dfe744cd" x="74" y="55" width="420" height="15"/> 
      <textElement textAlignment="Center"> 
       <font isBold="true"/> 
      </textElement> 
      <textFieldExpression><![CDATA[$P{AGENCY_NAME}]]></textFieldExpression> 
     </textField> 
    </band> 
</title> 
相关问题