Jasperreport5.6.0生成PDF

最近项目中需要生成报表,先是看了下itext,觉得还可以,但是如果数据字段多的话,不太灵活。所以后来看了下ireport,觉得还可以,下面简单说一下它们:

  1. jasperreport

    JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式。该库完全由Java写成,可以用于在各种Java应用程序,包括J2EE,Web应用程序中生成动态内容。它是开源的,但文档收费。

  2. ierport

    iReport 是生成JasperReport所使用的报表格式文件.jasper,因为JasperReport本身并未提供很好的可视化报表设计工具,iReport的出现正好弥补了这个缺陷。

两者配合使用:irpeort负责生成编译后的.jasper格式文件,生成.jasper格式后再用 jasperreport在程序中生成需要的报表格式,这里主要说说jasperreport中如何生成pdf.

注意: jasperReport与ireport版本要一致。我这里的版本是最新的版本5.6.0。

如下例所示:

//ireport生成项目立项PDF格式

public String getIreportPDFAction()

{

Connection conn =null;//连接

try {

String projectapproid =request.getParameter("projectapproid");

//报表生成之后编译生成的.jasper文件位置

//1.绝对路径

File jasperFile=new File("D:/jasper/report1.jasper");

//得到数据URL

String url ="jdbc:oracle:thin:@192.168.1.104:1521:orcl";

Class.forName("oracle.jdbc.driver.OracleDriver");

conn = DriverManager.getConnection(url,"zwjx","zwjx");

//设置参数

Map parmerters = new HashMap();

parmerters.put("projectapproid", projectapproid);

//生成pdf

byte[] bytes = JasperRunManager.runReportToPdf(jasperFile.getPath(),parmerters,conn);

response.setContentType("application/pdf");

response.setContentLength(bytes.length);

//指定位置保存pdf位置

FileOutputStream outs =new FileOutputStream("D:/jasper/report1.pdf");

outs.write(bytes,0,bytes.length);

outs.flush();

outs.close();

}catch (Exceptione) {

e.printStackTrace();

System.out.println("ireport生成报表出错!");

}finally

{

try {

conn.close();

}catch(SQLException e) {

//TODO Auto-generated catch block

e.printStackTrace();

}

}

returnnull;

}

运行后我们去D盘下的jasper文件夹中可以看到生成的 pdf.打开效果如下:

//上面的读取位置和保存位置都是根据自己所放位置设定的。

通过report转换工具类生成一个文件流,然后可以将文件流用于传输,也可以直接使用该文件流用于生成PDF格式文件。

/**
* report转换工具类
*
*/
public class IspReportUtil {

public static String exportReportToByte(CommonReportHandler handler)
throws AppException {
JRDataSource dataSource = null;
if (handler.getDataList() != null && handler.getDataList().size()>0) {
dataSource = new JRBeanCollectionDataSource(handler.getDataList());// 获取数据集
} else {
dataSource = new JREmptyDataSource();
}
try {
InputStream inputStream = new FileInputStream(handler.getReportFile());
byte[] data = JasperRunManager.runReportToPdf(inputStream, handler.getParamMap(), dataSource);
return new BASE64Encoder().encode(data);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
}

Jasperreport5.6.9-----1的更多相关文章

  1. Jasperreport5.6.9-----2

    Jasperreport5.6.0生成PDF   上一篇讲的是jasperreport5.6.0生成pdf,运行后可以生成pdf,可是和我们的需求有点差距,我们是要求生成后,可以直接打开或保存,这就需 ...

  2. 使用jasperreports-5.6.0.jar导致的问题

    使用jasperreports-5.6.0.jar导致的问题 Struts2+jasperReport5.6如下设置: <!-- 社员档案 --> <package name=&qu ...

  3. ireport导出中英文pdf

    准备: 报表开发工具:ireport 5.6.0 报表框架: jasperreport5.6.0 1.中文格式设置pdf fontname.isembedded.pdfencoding pdf fon ...

随机推荐

  1. day31-软件开发规范

    一.为什么要规范软件开发? 1.1 为什么要有规范软件开发 你现在包括之前写的一些程序,所谓的'项目',都是在一个py文件下完成的,代码量撑死也就几百行,你认为没问题,挺好.但是真正的后端开发的项目, ...

  2. Centos7 Minimal 安装后 初始化配置

    安装完成后初始化配置 1:更新yum yum upgrade 2: 安装基础命令 #yum -y install vim* lrzsz gcc-c++ pcre pcre-devel zlib zli ...

  3. android的特点有哪些

    android拥有完善的应用程序框架,支持4大应用组件activity,service,contentProvider,broadcast,可以在任意层次上进行复用和更换: android中java字 ...

  4. UI5-学习篇-6-SAP创建OData服务-RFC

    1.创建项目 2.Import RFC接口 3.定义实体名 目标服务器:若连接外部服务器则需SM59配置Destination 选择RFC函数名 4.选择数据源参数 5.设置主键值 6.保存成功 7. ...

  5. 集合,ArrayList

    用集合代替数组: Console.Write("请输入人数:"); int renshu = int.Parse(Console.ReadLine()); ArrayList ch ...

  6. 虚拟机mac 与主机的网络共享

    1. 主机建立共享文件夹 aaa 2.虚拟机采用桥接 3.mac打开Finder 找到 “前往” 连接服务器”输入“smb://192.168.1.xx”(你电脑的ip地址),点击连接.

  7. c++复习:STL之理论基础

    1 STL(标准模板库)理论基础 1.1基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之 ...

  8. swift中UIImageView的创建

    let imageView = UIImageView() let imageView1 = UIImageView(frame: CGRectMake(, , , )) // 创建出来的UIImag ...

  9. CMake Error at cmake/OpenCVModule.cmake:295 (message): No extra modules found in folder:Please provide path to 'opencv_contrib/modules' folder

    其实,我们使用的opencv中要用的contrib/modules   是需要额外下载并在cmakelists.txt中指定的 git clone https://github.com/opencv/ ...

  10. JAVA语言 第四周

    oh my god! 说实话,上周的目标没有完成. 这一周过的太随便了,比刚放假时候的热情减少的太多了. 具体干了啥,就不说了吧.好像什么完整的事都没有干~~~~~ 不过一直在完善代码,已经能实现部分 ...