补丁方式
通过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);
}
}
闽公网安备 35060202000074号