2009-09-03 56 views
1

我需要將圖像放入與Jasper報表匹配的數據庫中的行。我擁有專有檔案文件中的圖像數據,我可以使用Java代碼輕鬆提取這些數據。我需要知道如何將我的Java代碼連接到Jasper報告以使提取過程發生,例如BIRT的onRowSets()方法。 (我需要關於填充過程如何工作的概述文檔。)如何從Jasper報告中的檔案中提取和使用圖像?

如果我定義了一個POJO/bean數據源,我也無法輕鬆使用該數據庫。我可以在XML中嵌入必要的Java提取代碼嗎? This example at the Jasper Assistant site似乎表明,我可以:

 
    <imageExpression class="java.io.File"> 
     <![CDATA[(new File($P{BaseDir}, "logo_"+$P{ReportCollecter}+".gif").exists()) 
     ? new File($P{BaseDir}, "logo_"+$P{ReportCollecter}+".gif") 
     : new File($P{BaseDir}, "logo_BLANK.gif")]]> 
    </imageExpression> 

那是新文件()實際上Java代碼嵌入到XML?我願意編寫代碼,但我似乎無法找到任何完整的類代碼示例(我想我想要類似擴展圖像對象的東西)。

回答

0

默認情況下,當前版本的iReport(3.6.0)使用Groovy(一種Java腳本語言),它可以完全訪問類路徑中的任何Java庫。

我所要做的就是編寫一些代碼從存檔中提取圖像,並返回一個InputStream對象(來自ByteArrayInputStream)。然後,我做了一個jar文件,並呼籲從碧玉JRXML文件,像這樣的功能:

 
<imageExpression class="java.io.InputStream"> 
    <![CDATA[ 
com.mycompany.jasper.MyImageExtractor.getImage($F{IMAGE_URL}, $V{JasperVariable}) 
    ]]> 
</imageExpression> 

(您也可以鏈接到與iReport的GUI代碼 - 設置「意象表現」屬性爲你的新形象到「CDATA」之後的行)

爲了更簡單的Java編碼需求,您可以在報告的XML中使用write simple Groovy code

請注意,可以使用$V{VariableName}在Groovy中訪問Jasper變量,可以使用$F{ColumnName}訪問SQL數據庫列。

相關問題