2009-09-03 7 views
1

데이터베이스의 행과 일치하는 Jasper 보고서에 이미지를 넣어야합니다. Java 코드에서 쉽게 추출 할 수있는 독점적 아카이브 파일에 이미지 데이터가 있습니다. Java 코드를 Jasper 보고서에 연결하여 BIRT의 onRowSets() 메소드와 같은 추출 프로세스를 수행하는 방법을 알아야합니다. 채우기 프로세스 작동 방식에 대한 개요 문서가 필요합니다.재스퍼 보고서에서 아카이브의 이미지를 추출하고 사용하려면 어떻게해야합니까?

POJO/bean 데이터 소스를 정의하면 데이터베이스를 쉽게 사용할 수 없습니다. 필요한 Java 추출 코드를 XML에 바로 포함시킬 수 있습니까? 새로운 파일() 실제로 자바 코드가 XML에 포함 된 것을

 
    <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> 

인가 : This example at the Jasper Assistant site은 내가 할 수있는 것을 나타내는 것 같다? 나는 코드를 작성하길 원하지만 모든 클래스 코드 예제를 찾을 수없는 것 같습니다 (확장 된 이미지 객체와 같은 것을 원한다고 생각합니다).

답변

0

기본적으로 현재 버전의 iReport (3.6.0)는 클래스 경로의 Java 라이브러리에 대한 모든 액세스 권한이있는 Groovy (Java 스크립팅 언어)를 사용합니다.

내가해야 할 일은 아카이브에서 이미지를 추출하고 ByteArrayInputStream에서 InputStream 객체를 반환하는 코드를 작성하는 것이 었습니다. 그럼 난 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을 입력 할 수 있습니다.

재 스퍼 변수는 Groovy에서 $V{VariableName}으로 액세스 할 수 있으며 SQL 데이터베이스 열은 $F{ColumnName}으로 액세스 할 수 있습니다.

관련 문제