科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道iReport整合向量图形的使用心得

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  补丁方式   通过svg-patch-src修补jasperreports cvs源码,编译后与iReport源码整合。笔者发现了少数中文和xml校验等问题,通过修改源码可以解决。所以建议iText,jasperreports。

作者:中国IT实验室 来源:中国IT实验室 2007年9月25日

关键字: 编程 java

  • 评论
  • 分享微博
  • 分享邮件

  补丁方式
  通过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方法一样。
  

  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);
  
  }
  }

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章