ireport3.1.2结合JFreeChart1.0.10显示不出图片
先生成jrxml,代码如下:
在写生成图片的类,代码哪下:
调用的类,代码如下:
JSP页面调用
运行后,能看到静态文本,但看不到图片,还有乱码,请各位大哥,大姐,指点下
[img]http://huanglppp.iteye.com/upload/attachment/51739/3c8e5574-c83b-3aa4-ab30-081da6d7d06f.bmp[/img]
先生成jrxml,代码如下:
<?xml version="1.0" encoding="GBK"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report name" pageWidth="595" pageHeight="842" columnWidth="535" leftMargin="20" rightMargin="20" topMargin="20"
scriptletClass="com.todaysoft.openflex4j.security.producefunction.jasper.JFreeChartScriptlet" bottomMargin="20">
<property name="ireport.scriptlethandling" value="2" />
<property name="ireport.encoding" value="GBK" />
<import value="java.util.*" />
<import value="net.sf.jasperreports.engine.*" />
<import value="net.sf.jasperreports.engine.data.*" />
<variable name="chart" class="net.sf.jasperreports.engine.JRRenderable"/>
<background>
<band/>
</background>
<title>
<band height="58">
<staticText>
<reportElement x="90" y="12" width="298" height="35"/>
<textElement textAlignment="Center">
<font fontName="宋体" size="14" isBold="true"/>
</textElement>
<text><![CDATA[在Jasperreport中添加Jfreechart图形]]></text>
</staticText>
</band>
</title>
<pageHeader>
<band/>
</pageHeader>
<columnHeader>
<band/>
</columnHeader>
<detail>
<band height="300">
<image>
<reportElement x="0" y="12" width="538" height="288"/>
<imageExpression class="net.sf.jasperreports.engine.JRRenderable"><![CDATA[$V{chart}]]></imageExpression>
</image>
</band>
</detail>
<columnFooter>
<band/>
</columnFooter>
<pageFooter>
<band/>
</pageFooter>
<summary>
<band/>
</summary>
</jasperReport>
在写生成图片的类,代码哪下:
package com.todaysoft.openflex4j.security.producefunction.jasper;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.util.Rotation;
import net.sf.jasperreports.engine.JRDefaultScriptlet;
import net.sf.jasperreports.engine.JRScriptletException;
import net.sf.jasperreports.renderers.JCommonDrawableRenderer;
public class JFreeChartScriptlet extends JRDefaultScriptlet {
public void afterReportInit() throws JRScriptletException {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("Java", 40.2F);
dataset.setValue("VB", 20.2F);
dataset.setValue("C/C++", 17.5F);
dataset.setValue("C#", 22.5F);
dataset.setValue("Perl", 1.0F);
JFreeChart chart = ChartFactory.createPieChart3D("各种语言使用率",
dataset, true, true, false);
PiePlot3D plot = (PiePlot3D)chart.getPlot();
plot.setStartAngle(290);
plot.setDirection(Rotation.CLOCKWISE);
plot.setForegroundAlpha(0.5f);
plot.setNoDataMessage("没有可显示的数据");
this.setVariableValue("chart", new JCommonDrawableRenderer(chart));
}
}
调用的类,代码如下:
package com.todaysoft.openflex4j.security.producefunction.jasper;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspWriter;
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JRRuntimeException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.j2ee.servlets.ImageServlet;
public class JFreeChartApp {
@SuppressWarnings("deprecation")
public void export(HttpServletRequest request, JspWriter writer)
throws IOException, Exception {
String reportSource;
reportSource = request.getSession().getServletContext()
.getRealPath("WEB-INF/jasper/jfreechart.jrxml");
File parent = new File(reportSource).getParentFile();
File child = new File(
parent, "jfreechart.jasper");
JasperCompileManager.compileReportToFile(reportSource,
child.getAbsolutePath());
// 编译成.jasper文件
if (!parent.exists())
throw new JRRuntimeException(".jasper文件找不到,无法编译.");
JasperReport jasperReport;
jasperReport = (JasperReport) JRLoader.loadObject(child.getAbsolutePath());
Map parameters = new HashMap();
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,
parameters, new JREmptyDataSource());
// 使用JRHtmlExproter导出Html格式
JRHtmlExporter exporter = new JRHtmlExporter();
(request.getSession()).setAttribute(
ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,
jasperPrint);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, writer);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,
"../OPENFLEX4J/image?image=");
exporter.exportReport();
}
}
JSP页面调用
<%@ page import="com.todaysoft.openflex4j.security.producefunction.jasper.*"%>
<%@ page contentType="text/html; charset=GBK"%>
<%
JFreeChartApp jfreeChartApp = new JFreeChartApp();
jfreeChartApp.export(request,out);
%>
运行后,能看到静态文本,但看不到图片,还有乱码,请各位大哥,大姐,指点下
[img]http://huanglppp.iteye.com/upload/attachment/51739/3c8e5574-c83b-3aa4-ab30-081da6d7d06f.bmp[/img]