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. JS 时间函数 / 格式化时间戳

    处理时间主要使用时间对象 Date , 其提供两个静态方法 Date.now() //获得当前时间戳 Date.parse() //将字符串转化成时间戳 创建对象 new Date(); // 返回当 ...

  2. element UI select 设定默认值

    要为select设定默认值,有两个步骤 1.数据中,声明一个变量param:该变量的值设为你想设定的select option中value 2.控件的 v-model 绑定 param 即可 < ...

  3. des加密delphi与c#

    des加密delphi与c# C#默认是CBC,PKCS7

  4. day21-类的组合

    一.面向对象的组合用法 软件重用的重要方式除了继承之外还有另外一种方式,即:组合组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合 用组合的方式建立了类与组合的类之间的关系,它是一种‘ ...

  5. ueditor富文本框图片显示

    修改config.json /* 前后端通信相关的配置,注释只允许使用多行方式 */ { /*"physicsPath":"E:/Software/apache-tomc ...

  6. JQuery中bind和unbind函数与onclick绑定事件区分

    JQuery中bind和unbind函数转载:   https://blog.csdn.net/liucheng417/article/details/51131982 页面代码: <body& ...

  7. SQL Server CLR 使用 C# 自定义存储过程和触发器

    资源来源:https://www.cnblogs.com/Brambling/p/8016060.html SQL Server CLR 使用 C# 自定义存储过程和触发器   这一篇博客接着上一篇博 ...

  8. Firebird日期时间操作

    最近在使用Firebird数据做 一项目,使用FireBird边用边学.(以下转贴) 查询2007年度以后的,12月份以上的数据记录,datetime为timestamp字段 select * fro ...

  9. Haskell语言学习笔记(75)Conduit

    安装 conduit $ cabal install conduit Installed conduit-1.3.0.3 Prelude> import Conduit Prelude Cond ...

  10. ajaxfileupload.js上传文件兼容IE7及以上版本

    要兼容IE789,要修改ajaxfileupload.js;要将此处的代码替换掉 if(window.ActiveXObject) { var io = document.createElement( ...