* 출처 : http://www.jopenbusiness.com/mediawiki/index.php/JasperReports
JasperReports
오픈소스 비즈니스 컨설팅 사이트는 모든 사람이 동참하는 개방된 사이트 입니다.
오픈 소스와 오픈 API와 관계된 사항은 자유로이 추가, 수정 하셔도 됩니다. 모두의 동참을 바랍니다.
오픈소스 비즈니스 컨설팅에 대한 문의는 으로 메일 주세요.
오픈 소스와 오픈 API와 관계된 사항은 자유로이 추가, 수정 하셔도 됩니다. 모두의 동참을 바랍니다.
오픈소스 비즈니스 컨설팅에 대한 문의는 으로 메일 주세요.
오픈소스 비즈니스 컨설팅
오픈 소스로 다양한 컨텐츠를 PDF, HTML, XLS, CSV 파일 등으로 출력하는 리포팅 툴인 JasperReports를 정리한다. Java Class 파일로 제공되므로 환경 설정을 하여 사용 한다.
- 홈페이지 : http://www.jaspersoft.com/, http://sourceforge.net/projects/jasperreports/, http://sourceforge.net/projects/jaspersoft/
- 다운로드 : 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<String, String> param = new HashMap<String, String>();
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);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
JasperReport
[<%= rtStr %>]
<%= filename %>
관리자 가이드
한글 설정
- PDF에서 한글을 출력하기 위해서 jrxml 파일에서 다음과 같이 설정 한다.
<textElement textAlignment="Center" verticalAlignment="Middle">
<font isBold="true"
pdfFontName="d:/www_project/projectJasperReports/WebContent/fonts/gulim.ttf"
pdfEncoding="Identity-H"/>
</textElement>
참고 문헌
- JasperReports 소개 : 삼성 Anyframe에서 외부 구성 요소로서 정리한 자료
- iText, a JAVA-PDF library
[출처] JasperReport|작성자 자근앙마
'Java' 카테고리의 다른 글
[Java] 각종Tip모음 (0) | 2011.01.28 |
---|---|
[Java] MultiPartRequest 객체(cos.jar)를 사용한 업로드 (0) | 2010.12.13 |
[Java] java로 PDF를 Image로 만들기 (1) | 2010.12.07 |
[Java] Pdf생성 (0) | 2010.12.07 |
[Java] File Size 체크 (0) | 2010.12.07 |