MY SOFTHOUSE
BOOKMARK
SOFTWARE
FRIEND
EMAIL
EDIT
SIGN OUT
HELP
 
  首页   资讯   网摘   软件下载   问知   动漫娱乐   软件供求   论坛   
 资讯
 资讯 >> 编程语言 >> Java
email给朋友】 浏览字号:【 】 【打印】 【关闭窗口
相关资讯  
相关文摘  
相关软件  
 



iReport整合向量图形

    笔者最近通过试用iReport并整合了打了向量图形的补丁后的JasperReports,发现iReport的功能和易用性接近商业化的报表工具。成为开源报表工具的首选。Svg补丁直接使用了iText对Java Graphics2D的wrap来实现pdf文件的svg图形。

iReport主页

JasperReports向量图形patch


补丁方式
    通过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);
    
    }
}



 

 

 

 

 

 


出处: Java原创社区 efly 原创 日期: 2004-10-25 好: 一般: 差:
 
评论
  发表评论 投票: 一般
 
通知管理员(希望管理员根据你的评论修改软件信息)
  TrackBack
 
返回主页 | 关于我们 | 免责声明 | 联系广告| 读者投稿 | 友情链接 | 诚聘英才
  Copyright © 2004-2008 Forlink Technologies All Rights Reserved 
版权所有 时力科技 联系:客户服务中心 京ICP证030637号