- 설치 가이드
- 사용자 가이드
- 관리자 가이드
- 한글 설정
- 참고 문헌
오픈 소스로 다양한 컨텐츠를 PDF, HTML, XLS, CSV 파일 등으로 출력하는 리포팅 툴인 JasperReports를 정리한다. Java Class 파일로 제공되므로 환경 설정을 하여 사용 한다.
홈페이지 : http://www.jaspersoft.com/, http://sourceforge.net/projects/jasperreports/, http://sourceforge.net/projects/jaspersoft/
JasperForge : http://jasperforge.org/plugins/project/project_home.php?group_id=102
다운로드 : http://sourceforge.net/project/showfiles.php?group_id=36382
라이센스 : GNU LGPL 3.0
플랫폼 : Java
설치 가이드
Web Application에 환경 설정
다운로드 사이트에서 "jasperreports-3.1.4-project.zip"을 다운로드 한다.
압축을 풀어 lib/* 과 dist/*.jar 파일을 /WEB-INF/lib 폴더에 복사 한다.
필요한 JDBC Driver를 /WEB-INF/lib 폴더에 복사하고 Apache Tomcat을 재기동 한다.
사용자 가이드
iReport에서 작성한 jrxml 파일과 DB 접속 정보로 문서(html, xml, csv, pdf, rtf, xls) 문서를 생성하는 라이브러리 샘플 (pnus.jasperreports.jasperreports.java)
$TOMCAT_HOME/webapps/jasperreports : JasperReports를 적용한 Web Application
$TOMCAT_HOME/webapps/jasperreports/jrxml/ : jrxml 파일 저장 폴더
$TOMCAT_HOME/webapps/jasperreports/files/type/ : 생성된 문서 저장 폴더, type별로 다른 폴더를 사용함
package pnus.jasperreports;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JRAbstractExporter;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRCsvExporter;
import net.sf.jasperreports.engine.export.JRGraphics2DExporter;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.export.JRPrintServiceExporter;
import net.sf.jasperreports.engine.export.JRRtfExporter;
import net.sf.jasperreports.engine.export.JRTextExporter;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
import net.sf.jasperreports.engine.export.JRXmlExporter;
public class jasperreports {
public static String jdbcDriverMySQL = "com.mysql.jdbc.Driver";
public static String jdbcUrlMySQL = "jdbc:mysql://localhost/dotprojectdb";
private static String username = "DB 사용자 아이디";
private static String password = "DB 사용자 암호";
private static Connection conn = null;
private String rootJrxml = "$TOMCAT_HOME/webapps/jasperreports/jrxml/";
private String rootFile = "$TOMCAT_HOME/webapps/jasperreports/files/";
public String makeReport(String jrxml, String query, String type, String filename)
{
JasperReport report = null;
JasperPrint print = null;
JRAbstractExporter exporter = null;
Map param = new HashMap();
String outFilename = null;
openDatabase();
try {
param.put("query", query);
report = JasperCompileManager.compileReport(rootJrxml + jrxml);
print = JasperFillManager.fillReport(report, param, conn);
outFilename = rootFile + type + "/" + filename;
if (type == "html") {
exporter = new JRHtmlExporter();
} else if (type == "xml") {
exporter = new JRXmlExporter();
} else if (type == "csv") {
exporter = new JRCsvExporter();
} else if (type == "pdf") {
exporter = new JRPdfExporter();
} else if (type == "rtf") {
exporter = new JRRtfExporter();
} else if (type == "xls") {
exporter = new JRXlsExporter();
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
} else {
return null;
}
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outFilename);
exporter.exportReport();
} catch (JRException jrException) {
jrException.printStackTrace();
return null;
} finally {
closeDatabase();
}
return outFilename;
}
private boolean openDatabase(String jdbcDrive, String jdbcUrl, String username, String password)
{
if (conn != null) {
return true;
}
try {
Class.forName(jdbcDrive).newInstance();
conn = DriverManager.getConnection(jdbcUrl, username, password);
} catch (InstantiationException e) {
e.printStackTrace();
return false;
} catch (IllegalAccessException e) {
e.printStackTrace();
return false;
} catch (ClassNotFoundException e) {
e.printStackTrace();
return false;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
return true;
}
private boolean openDatabase(String username, String password)
{
return openDatabase(jdbcDriverMySQL, jdbcUrlMySQL, username, password);
}
private boolean openDatabase()
{
return openDatabase(username, password);
}
private void closeDatabase()
{
try {
if ((conn != null) && (!conn.isClosed())) {
conn.close();
}
} catch (SQLException e) {
}
conn = null;
}
}
위 pnus.jasperreports.jasperreports.java를 사용하는 샘플 JSP 파일
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="pnus.jasperreports.jasperreports" %>
<%
jasperreports report = null;
String type = null;
String filename = null;
String query = null;
String rtStr = null;
request.setCharacterEncoding("UTF-8");
type = "html";
filename = "test01.html";
report = new jasperreports();
query = "select project_name, project_start_date, project_end_date,"
+ " project_owner, project_actual_end_date, project_percent_complete"
+ " from projects";
rtStr = report.makeReport("test01.jrxml", query, type, filename);
%>
다우기술 PMS
JasperReport
[rtStr %>](<%=)
<%= filename %>
관리자 가이드
한글 설정
PDF에서 한글을 출력하기 위해서 jrxml 파일에서 다음과 같이 설정 한다.
참고 문헌
JasperReports 소개 : 삼성 Anyframe에서 외부 구성 요소로서 정리한 자료