BE/Spring

[Spring Boot] Jasper Reports 설정하기

멍목 2022. 5. 13. 21:09
반응형

안녕하세요.

 

이번 포스팅에서는 예전에 작성했던 Jasper Reports를 Spring Boot에 설정하는 방법에 대한 글입니다.


참고) 필자 개발 환경 

- Spring Boot 2.5.4

- Jasper Reports 6.19.0

 

Setting 방법

1. pom.xml

아래의 Dependency들을 추가한다.

<dependencies>
    ...
     
    <!-- Jasper Library -->
    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
        <version>6.19.0</version>
    </dependency>
    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports-functions</artifactId>
        <version>6.19.0</version>  
    </dependency>
    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports-fonts</artifactId>
        <version>6.0.0</version>
    </dependency>
     
    ...
<dependencies>

 

2. java

Jasper Report를 띄우는 예제 소스는 아래와 같다.

@RequestMapping("/jasperTest.do")
public ResponseEntity<byte[]> jasperTest(HttpServletRequest request, HttpServletResponse response) throws Exception {

    String path = "src/main/webapp/WEB-INF/jasper/test/";        // 경로 위치
    String fileName = "test.jrxml";                              // 파일 이름

    // EmptyDataSource 이용 시
    JREmptyDataSource dataSource_1 = new JREmptyDataSource(); // Datasource(DB에서 가져올지, 객체에서 가져올지, 안가져올지)

    // DB에서 사용자 리스트를 조회한 결과를 dtoList에 넣는다.
    List<Test> dtoList = testService.selectUserList();

    // JRBeanDataSource 이용 (Dto List를 보고서에 직접 넣어주는 방식)
    JRDataSource datasource_2 = new JRBeanCollectionDataSource(dtoList);

    // 파라미터 설정(예시)
    Map<String, Object> parameters = new HashMap<>();

    JasperPrint jasperPrint = null;

    HttpHeaders headers = new HttpHeaders();

    try {
        // 보고서에 파라미터를 직접 넣어줄 수도 있다.
        parameters.put("Param1", "value_1");

        // 여기서는 datasource_2(JRBeanDataSource 방식)을 이용
        jasperPrint = JasperFillManager.fillReport(JasperCompileManager.compileReport(path + fileName), parameters, datasource_2);

        // JasperExportManager.exportReportToPdfFile(jasperPrint, path + "\\test2.pdf");       // PDF 파일을 생성해서 서버에 저장하는 구문 주석처리

        headers.setContentType(MediaType.APPLICATION_PDF);                      // PDF 형식으로 출력
        //headers.setContentDispositionFormData("filename", "test.pdf");        // 이 구문을 추가하면 pdf 파일이 실행되는 것이 아닌 파일로 저장된다.

    } catch(Exception e) {
        e.printStackTrace();
    }

    return new ResponseEntity<byte[]>
        (JasperExportManager.exportReportToPdf(jasperPrint), headers, HttpStatus.OK);
}

 

참고사항

1) 한글도 보고서에 출력되길 원한다면, 한글 폰트 설정도 진행해야 한다. (https://ajdahrdl.tistory.com/67)

2) jdbc 설정은 Spring Boot에 jdbc 설정을 해두면 추후에, DB통신 방식을 이용할 경우 설정해둔 jdbc 정보들로 DB 통신이 된다.

반응형