spring 으로 구성된 서버 프로젝트에서 jasper pdf 를 생성해보자.
jasper studio 에서 미리보기 하는것과 동일하게 생각하면 된다.
gradle 의존성 추가
// jasperreports
implementation("net.sf.jasperreports:jasperreports:$jasperreportsVersion") // 6.12.2
implementation("com.lowagie:itext:$itextVersion") // 2.1.7
// 리파지토리에서 com.lowagie:itext 를 못가져오는 경우, 직접 메이븐 리파지토리에서 다운로드 후 라이브러리 폴더에 저장
// 대신 jasper 의존성 추가하는 부분에서는 제외해야 함
implementation("net.sf.jasperreports:jasperreports:6.12.2") {
exclude group: "com.lowagie"
}
.jasper 파일을 읽어서 pdf 로 출력하는 함수
fun jasperToPdf(inputStream: InputStream, parameters: Map<String, Any>, fields: Collection<Map<String, Any>>, outputStream: OutputStream) {
var jasperPrint = JasperFillManager.fillReport(inputStream, parameters, JRMapCollectionDataSource(fields))
JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream)
}
입력스트림(jasper 파일입력스트림) 의 내용을 읽어서 parameter(1 row 데이터)를 세팅하고, fields(many rows 데이터) 를 채우고 출력스트림(pdf 파일출력스트림) 으로 출력한다.
테스트 함수
@Test
fun jasperToPdf() {
val inputFilepath = "localpath/sample.jasper"
FileInputStream(inputFilepath).use { fis ->
FileOutputStream("$inputFilepath.pdf").use { fos ->
PdfTransformer.jasperToPdf(
inputStream = fis,
outputStream = fos,
parameters = mapOf(
"name" to "홍길동",
"age" to 77
),
fields = listOf(
mapOf(
"drugName" to "아스피린",
"quantity" to 1
),
mapOf(
"drugName" to "베아제",
"quantity" to 3
)
)
)
}
}
}
'오픈소스 가이드' 카테고리의 다른 글
[JasperReports] #2 한글폰트 설정 (0) | 2020.07.17 |
---|---|
[JasperReports] #1 Jasper studio (3) | 2020.05.12 |