java web 使用jasperReport 生成PDF报表
2016-09-12 16:21
656 查看
本文章主要讲述的是使用iReport工具生成jasper文件,在web应用中生成pdf文件。其原理非常简单,主要是依赖jar包需要注意,但你也可以根据异常进行判断那些jar包没有导入。让我们来简单看一下吧。
第一步:使用iReport工具生成jasper文件。
注:这里就不详细介绍了,不会的可以问度娘。
第二步:将生成的jasper文件放入项目中,并导入相关的jar包(需要的jar包在最后给出)
第三步:使用jasper生成pdf文档。此处的文档以附件的形式提供保存,但也可以使用流的方式写在本地,其原理一样。
注:这里是使用spring mvc框架。
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.zyiot.service.LogService;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
@Controller
@RequestMapping("/exportPDF")
public class ExportPDFController extends BaseController {
private LogService logService;
private DataSource dataSource;
public LogService getLogService() {
return logService;
}
@Autowired
public void setLogService(LogService logService) {
this.logService = logService;
}
public DataSource getDataSource() {
return dataSource;
}
@Autowired
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
@RequestMapping("/ePDF")
public void exportPDF(HttpServletRequest request, HttpServletResponse response) {
//设置响应内容格式
response.setContentType("application/pdf");
//附件名称
String attName = null;
OutputStream out = null;
try {
codeName = URLEncoder.encode("操作日志", "UTF-8");
//设置响应头,attachment:以附件形式,也可以直接在页面打开
response.addHeader("Content-Disposition", "attachment;filename=" + attName + ".pdf");
//设置jasper中的参数
//key 参数名 ,value 参数值
Map<String,Object> parameters = new HashMap<String,Object>();
//这里给的是数据库连接,你也可以是个集合,根据自己需求,填充jasper
Connection connection = dataSource.getConnection();
//获取jasper文件。
InputStream in = ExportPDFController.class.getResourceAsStream("/reoprt/report1.jasper");
//填充jasper,生成打印或导出实例
JasperPrint jasperPrint = JasperFillManager.fillReport(in, null, connection);
//使导出转换成更具体(popular formats)的形式,PDF、HTML、XML
byte[] bytes = JasperExportManager.exportReportToPdf(jasperPrint);
//得到响应流
out = response.getOutputStream();
//输出到响应中
out.write(bytes);
out.flush();
out.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JRException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
附:需要的jar包
commons-digester.jar
commons-logging-1.1.2.jar
groovy-all-2.4.6.jar
org.apache.commons.collections.jar
iText-2.1.7.js2.jar
iTextAsian.jar
jasperreports-5.6.0.jar
注:其包不一定包含全部,可根据具体需求进行添加
第一步:使用iReport工具生成jasper文件。
注:这里就不详细介绍了,不会的可以问度娘。
第二步:将生成的jasper文件放入项目中,并导入相关的jar包(需要的jar包在最后给出)
第三步:使用jasper生成pdf文档。此处的文档以附件的形式提供保存,但也可以使用流的方式写在本地,其原理一样。
注:这里是使用spring mvc框架。
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.zyiot.service.LogService;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
@Controller
@RequestMapping("/exportPDF")
public class ExportPDFController extends BaseController {
private LogService logService;
private DataSource dataSource;
public LogService getLogService() {
return logService;
}
@Autowired
public void setLogService(LogService logService) {
this.logService = logService;
}
public DataSource getDataSource() {
return dataSource;
}
@Autowired
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
@RequestMapping("/ePDF")
public void exportPDF(HttpServletRequest request, HttpServletResponse response) {
//设置响应内容格式
response.setContentType("application/pdf");
//附件名称
String attName = null;
OutputStream out = null;
try {
codeName = URLEncoder.encode("操作日志", "UTF-8");
//设置响应头,attachment:以附件形式,也可以直接在页面打开
response.addHeader("Content-Disposition", "attachment;filename=" + attName + ".pdf");
//设置jasper中的参数
//key 参数名 ,value 参数值
Map<String,Object> parameters = new HashMap<String,Object>();
//这里给的是数据库连接,你也可以是个集合,根据自己需求,填充jasper
Connection connection = dataSource.getConnection();
//获取jasper文件。
InputStream in = ExportPDFController.class.getResourceAsStream("/reoprt/report1.jasper");
//填充jasper,生成打印或导出实例
JasperPrint jasperPrint = JasperFillManager.fillReport(in, null, connection);
//使导出转换成更具体(popular formats)的形式,PDF、HTML、XML
byte[] bytes = JasperExportManager.exportReportToPdf(jasperPrint);
//得到响应流
out = response.getOutputStream();
//输出到响应中
out.write(bytes);
out.flush();
out.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JRException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
附:需要的jar包
commons-digester.jar
commons-logging-1.1.2.jar
groovy-all-2.4.6.jar
org.apache.commons.collections.jar
iText-2.1.7.js2.jar
iTextAsian.jar
jasperreports-5.6.0.jar
注:其包不一定包含全部,可根据具体需求进行添加
相关文章推荐
- Java使用itext生成PDF报表
- JasperReport(3)——Java简单使用IReport生成的文件建立报表
- 关于Java Web 使用 iText 将数据库中的 表 的数据 生成 PDF 格式文件(升級版本)
- 使用ITEXT与JAVA生成PDF报表
- 使用JasperReport和iReport制作java报表
- Java IText使用PDF模板 生成 输出PDF
- 使用Jasperreport作为报表控件开发Web 报表应用 后续
- 使用java生成pdf文档(2)
- JasperReport学习笔记4-查询数据库生成动态的报表(WEB)
- (例)Java生成PDF报表 iText
- 使用SpringMVC框架生成XLS和PDF格式的WEB应用视图
- 使用Java生成Pdf文档
- 使用SpringMVC框架生成XLS和PDF格式的WEB应用视图
- JasperReport学习笔记4-查询数据库生成动态的报表(WEB)
- 使用Java组件itext 生成pdf介绍
- 使用Java生成Pdf文档
- jasperreport生成html,Excel,PDF报表,数据源使用List
- Java 使用 iText动态生成PDF文档
- 使用ireport做pdf报表,生成的pdf一直都是文件损坏,无法打开,哪位大侠指点一下
- 使用JasperReport与iBATIS开发Web报表