在近期工作中,需要将一场比赛完成后,在足球现场将数据通过PDF的方式导出。通过简单的调研及朋友的推荐,选择通过Birt来制作报表。现将工作中所学总结起来。
1. 安装
Birt是基于eclipse的一款IDE,可以通过单独安装IDE或eclipse插件的方式安装。
http://www.eclipse.org/birt/
2. 绑定数据源
(1) 绑定jdbc数据源
在绑定数据源时,记得加载驱动
也可以从connection profile中加载:
(2) 创建脚本数据源
这个留着后面有个例子中详细讲。
3. 插入图片
一般的插入图片方式就不再赘述,Birt里默认支持的dynamic image对应的是数据库里Blob格式的图片,现在存图片很多都通过存URL的方式,这里主要介绍如何绑定数据库URL的动态图片。通过ImageIO类去加载图片,可以是URL,资源文件(对应image file in shared resources,如果在工程里面有文件夹,记得在前面加上),或者是jar包里的图片。
注意:资源文件放到WEB工程里后,reportContext.getResource里对应的相对路径可能会变。举个例子:我放到WEB工程后,报表和resources文件夹都放在src/main/resources/reports下,其中src/main/resources是我的source folder。那么在在报表工程里是resources/xxx.png,而WEB工程里就应该是reports/resources/xxx.png。
(1)在图片的onCreate脚本中写入:
importPackage(Packages.java.io);
importPackage(Packages.java.lang);
importPackage(Packages.java.net);
importPackage(Packages.javax.imageio);
//File Based
//var myfile = new Packages.java.io.File("c:/test/green.png");
//var img = ImageIO.read(myfile);
//URL Based
//Jar image in resource folder
//var jarfile = reportContext.getResource("birtimages.jar");
//var myfulljarimagestr = "jar:"+jarfile.toString()+"!/red.png";
//var myurl = new Packages.java.net.URL(myfulljarimagestr);
//Image in resource folder
//var myurl = reportContext.getResource("green.png");
//Image at url
var myurl = new Packages.java.net.URL(row[“logo"]);