`
huanglppp
  • 浏览: 63215 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ireport3.1.2结合JFreeChart1.0.10能显示文字,但不显示图片

阅读更多
ireport3.1.2结合JFreeChart1.0.10显示不出图片
先生成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);
%>


运行后,能看到静态文本,但看不到图片,还有乱码,请各位大哥,大姐,指点下

  • 大小: 5.6 KB
分享到:
评论
2 楼 nopain_nogain 2009-03-16  
huanglppp 写道

今天看了下,原来我是通过struts2去做的,用了struts-jasperreport插件,没有在web.xml文件配置,jasperreport和jfreechart集成后,不能跟struts-jasperreport插件集成。。。 只能跟servlet,jsp集成。。。个人见解,,,望其他人指点 现在通过JSP能够得到想要的效果


你好,我把你的程序跑起来了,不过也是红X,请问你是怎么解决的,谢谢。
1 楼 huanglppp 2008-11-21  
今天看了下,原来我是通过struts2去做的,用了struts-jasperreport插件,没有在web.xml文件配置,jasperreport和jfreechart集成后,不能跟struts-jasperreport插件集成。。。

只能跟servlet,jsp集成。。。个人见解,,,望其他人指点
现在通过JSP能够得到想要的效果

相关推荐

Global site tag (gtag.js) - Google Analytics