服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

ireport整合向量图形的使用心得


  补丁方式
  通过svg-patch-src修补jasperreports cvs源码,编译后与ireport源码整合。笔者发现了少数中文和xml校验等问题,通过修改源码可以解决。所以建议itext,jasperreports,jfreechart,ireport都使用cvs源码。
  
  中文问题
  修改com.lowagie.text.pdf.defaultfontmapper类的awttopdf方法:
  basefont bf = null;
    try {
      bf =
        basefont.createfont(
  system.getproperty(“font.chinese.simyou”),"d:/wiki/ireport-0.3.0/fonts/simyou.ttf",
          basefont.identity_h,
          basefont.embedded);
    } catch (documentexception e1) {
      // todo auto-generated catch block
      e1.printstacktrace();
    } catch (ioexception e1) {
      // todo auto-generated catch block
      e1.printstacktrace();
    }
  
  在linux平台上部署的时候需要修改jfreechart相应的字体。
  
  ireport chart
  ireport目前对chart支持很有限,不过通过image标签和scriptlet可以很好的嵌入jfreechart图形, 嵌入其它chart比如jcharts方法一样。
  
ireport整合向量图形的使用心得

  scriptlet代码
  public class chartscriptlet extends jrdefaultscriptlet
  {
  /**
   *
   */
  public void afterreportinit() throws jrscriptletexception
  {
    connection con=null;
    defaultpiedataset piedataset = new defaultpiedataset();
    try {
      class.forname("oracle.jdbc.driver.oracledriver");
      system.out.println("oracle.jdbc.driver.oracledriver");
    } catch (classnotfoundexception e) {
      // todo auto-generated catch block
      e.printstacktrace();
    }
    try {
  
      con =
        drivermanager.getconnection(
          "jdbc:oracle:thin:@127.0.0.1.38:1521:ora8i",
          "user",
          "password");
  
      string query =
        "select province.name as name,sum(bill.total) as total from province,bill,node where bill.node_id =node.id and node.province_id=province.id and bill.create_time > to_date('2004-1-1','yyyy-mm-dd') group by province.name";
      statement stmt = con.createstatement();
  
      // submit a query, creating a resultset object
  
      resultset rs = stmt.executequery(query);
  
      while (rs.next()) {
        system.out.println(rs.getstring("name"));
        piedataset.setvalue(
          rs.getstring("name"),
          rs.getdouble("total"));
      }
      rs.close();
      stmt.close();
      con.close();
    } catch (sqlexception e) {
      // todo auto-generated catch block
      e.printstacktrace();
    }
  
    jfreechart chart =
      chartfactory.createpiechart(
        "2004-1-1至今各省帐单数据统计图",
        piedataset,
        true,
        true,
        false);
    jcommondrawablewrapper chartwrapper = new jcommondrawablewrapper(chart);
  
    this.setvariablevalue("chartimage", chartwrapper);
  
    bufferedimage image = chart.createbufferedimage(246, 303);
    this.setvariablevalue("chartimage2", image);
  
  }
  }

扫描关注微信公众号