集智平台API设置报表背景图

一些客户开发报表要到给报表动态设置背景图,背景图可能是一些从数据库中存储的图片,从数据库中把这些图片查出来,然后动态的设置为某些报表的背景图。由于设计器中只能指定固定的图片,没办法动态的设置,也不能用到数据库中存储的图片,所以这个功能要靠api来实现。

用api来实现报表的背景图需要实现润乾api的IBackGraphGenerator接口,重写generate(Context arg0, BackGraphConfig arg1)方法,最后返回一个BufferedImage对象。下面就用一个例子来实现用api自定义报表的背景图。

 

第一步:连接数据库,并从数据库中取出图片。

首先要连接数据库,然后从数据库中将图片查出来,再将图片解析成BufferedImage类型。如上面所说自定义报表背景图需要实现润乾api的IBackGraphGenerator接口,重写generate(Context arg0, BackGraphConfig arg1)方法。

以demo数据库的雇员表里面照片为例,将照片设置成报表的背景图,api代码如下所示:

package com.zhengzhong.practise;

import java.awt.image.BufferedImage;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import com.runqian.report4.usermodel.BackGraphConfig;

import com.runqian.report4.usermodel.Context;

import com.runqian.report4.usermodel.IBackGraphGenerator;

import java.sql.*;

import javax.imageio.ImageIO;

import javax.imageio.stream.ImageInputStream;

public class Graphic implements IBackGraphGenerator{

public BufferedImage generate(Context arg0, BackGraphConfig arg1) {

// TODO Auto-generated method stub

String driver=”org.hsqldb.jdbcDriver”;

String url=”jdbc:hsqldb:hsql://localhost/runqianDB”;

String user=”sa”;

String passwd=”";

String sql=”SELECT 雇员.照片 FROM 雇员”;

BufferedImage bi=null;

try {

Class.forName(driver);

Connection conn=DriverManager.getConnection(url,user,passwd);

Statement stmt=conn.createStatement();

ResultSet rs=stmt.executeQuery(sql);

System.out.println(“rsrsrsrsrsrsrsrsrsrs=”+rs);

rs.next();

InputStream is = rs.getBinaryStream(1);

System.out.println(“>>>>>>>>>>>>>>>>>>>>>>>>>>>”+is);

bi = ImageIO.read(is);

System.out.println(“============================”+bi);

catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return bi;

}

}

第二步:在报表中使用自己定义的背景图。

将上面的类连同包一起放到designer\web\WEB-INF\classes\ 路径下(这里是为了在设计器中预览看到效果,如果在web应用中请放到应用的WEB-INF\classes\ 路径下)。

本文标签: