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

J2EE使用ireport做导出PDF操作

 
阅读更多
首先,在lib中,加入一下jar:

    jasperreports-4.5.0.jar //
    groovy-all-1.7.5.jar
    iText-2.1.7.jar //导出PDF
    iTextAsian.jar //导出PDF,解决中文问题


使用ireport设计报表时,导出pdf,解决中文问题,需设置下面三个属性
Pdf font name :STSong-Light //简体宋体
Pdf Embedded : 勾选
Pdf Encoding : UniGB-UCS2-H (Chinese Simplified)

把生成的*.jasper文件复制到webroot下面的一个目录。

package net.bingosoft.ireport.servlet;

import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.bingosoft.common.ObjectRegistry;
import net.bingosoft.common.config.Config;
import net.bingosoft.common.data.BaseDao;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.export.JRPdfExporterParameter;
import net.sf.jasperreports.engine.util.FileBufferedOutputStream;
import net.sf.jasperreports.engine.util.JRLoader;

/**
 * ireport导出类
 * @version 2012-02-29 
 *
 */
public class IreportServlet extends HttpServlet{

	private static final long serialVersionUID = 5306946463388538105L;
	
	private Map<String, Object> params;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		this.doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		ServletContext servletContext = this.getServletConfig().getServletContext();
		//取文件路径标识
		String filePathFag = req.getParameter("FILE_PATH_FAG");
		//根据文件路径标识,从配置文件中,获取实际路径
		String filePath = Config.getString(filePathFag);
		File jsperFile = new File(servletContext.getRealPath(filePath));
		
		BaseDao baseDao = ObjectRegistry.getBaseDao();
		JasperPrint jasperPrint = null;
		params = new HashMap<String, Object>();
		try {
			//装载.jasper文件
			JasperReport jasperReport = (JasperReport)JRLoader.loadObject(jsperFile);
			//填充数据
			jasperPrint = JasperFillManager.fillReport(jasperReport, this.params, baseDao.getDatasource().getConnection());
			
		} catch (JRException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		if(null != jasperPrint){
			FileBufferedOutputStream fbos = new FileBufferedOutputStream();
			JRPdfExporter exporter = new JRPdfExporter();
			exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, fbos);
			exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT, jasperPrint);
			
			try {
				exporter.exportReport();
				if(fbos.size()>0){
					resp.setContentType("application/pdf");
					resp.addHeader("Content-Disposition","attachment; filename=\test.pdf");
					resp.setContentLength(fbos.size());
					ServletOutputStream outStream = resp.getOutputStream();
					try{
						fbos.writeData(outStream);
						fbos.dispose();
						outStream.flush();
					}finally{
						if(null != outStream){
							outStream.close();
						}
					}
				}
			} catch (JRException e) {
				e.printStackTrace();
			}finally{
				if(null !=fbos){
					fbos.close();
					fbos.dispose();
				}
			}
		}
	}
}



上面是使用servlet。那么需要在web.xml中,配置自定义的servlet
  	<servlet>
  		<servlet-class>net.bingosoft.ireport.servlet.IreportServlet</servlet-class>
  		<servlet-name>ireportServlet</servlet-name>
  	</servlet>
  	
  	<servlet-mapping>
  		<servlet-name>ireportServlet</servlet-name>
  		<url-pattern>/ireportServlet</url-pattern>
  	</servlet-mapping>

导出效果图:
分享到:
评论

相关推荐

    JasperReport+iReport报表开发手册.pdf

    - **使用指南**:官方文档提供了详细的使用指南,包括如何设计报表、如何填充数据、如何导出报表等。建议初学者从官方文档入手,逐步熟悉整个流程。 通过以上内容可以看出,JasperReport和iReport是一套完整的报表...

    iReport4.5.1使用详解

    JasperReport是一个强大的开源报表生成工具,它采用Java编写,适用于各种Java应用程序,包括J2EE和Web应用,可以生成包含丰富页面内容的报表,并将其导出为PDF、HTML或XML格式。而iReport是与JasperReport配套的开源...

    Web报表开发技术-iReport开发技术实例

    2. 报表分页和导出:合理设置报表的分页,同时支持各种导出格式,如PDF、Excel等。 3. 安全性:确保数据访问的安全,限制对敏感数据的访问。 4. 报表缓存:对于频繁访问但数据不常变的报表,可以启用缓存机制,提高...

    j2ee报表开发

    一旦报表设计完成,你可以将其导出为JasperReport文件(.jrxml或.jasper格式),并在你的J2EE应用中使用JasperReports API来运行和呈现报表。 为了确保报表的动态性,你需要在服务器端处理数据检索和报表渲染。这...

    jasperreport 与ireport 的配置与使用

    通过以上步骤,你就可以在J2EE项目中配置和使用JasperReport与IReport,实现高效灵活的报表生成。在实际应用中,还可以结合Spring框架或其他企业级框架进行更高级的集成和管理。记住,熟练掌握这些工具将极大地提升...

    JasperReport+iReport报表开发手册.zip

    它有一个相关的开源工程--IReport,这是一个图形化的辅 助工具,主要用于数据报表设计。JasperReports 完全是由 Java 写成,可以应用于 Java 的应用 程序,包括 J2EE,Web 应用程序中生成动态内容,它主要目的是辅助...

    iReport&JasperReport;开发手记(一)+List报表开发与发布.pdf

    对于资深的J2EE开发者来说,在遇到报表需求时往往会优先考虑是否已有成熟的开源报表框架可供使用。近年来,随着Jasper Report项目的成熟和发展,其已经成为了一种非常实用的选择,能够满足大多数应用场景下的需求。...

    JasperReport+iReport整合的Web报表开发

    - **设计阶段**:使用iReport进行可视化设计,避免与复杂的XML文件打交道。 - **数据处理**:从多种数据源获取数据,并对其进行组织。 - **生成报表**:根据设计好的模板和数据生成最终的报表。 #### 2. iReport...

    JasperReport 用户手册

    它完全由Java编写,适用于各种Java应用程序,包括J2EE和Web应用,用于生成动态内容,尤其适合制作面向页面的、用于打印的文档。报表的设计是基于XML文档定义的,允许数据从多种来源(如关系型数据库、集合、Java对象...

    JasperReport用户手册

    5. 最后,导出报表,如使用`JasperExportManager`将`JasperPrint`对象转换为PDF、HTML或其他格式。 总的来说,JasperReport为Java开发者提供了一个功能强大的报表解决方案,而IReport作为配套工具,极大地简化了...

    JasperReport详解

    IReport是JasperReport的配套工具,提供了一个图形化的用户界面,使得开发者无需直接操作XML就能设计和编辑报表。这极大地简化了报表开发流程,提高了效率。IReport与JasperReport结合使用,为报表开发人员提供了...

    JAVA报表解决方案源码

    通过阅读源码,开发者可以学习如何使用Java进行数据查询(如SQL操作),如何处理大量数据,以及如何构建灵活的模板引擎来生成定制化的报表。 3. **Java报表库**:Java中有多个流行的报表库,如JasperReports、BIRT...

    12个最好的开源报表工具.docx

    - **Web 基础架构**:基于 Web,便于部署和使用。 - **无编程要求**:无需编程知识即可创建报表。 - **灵活性**:支持创建各种类型的报表。 #### iReport **简介**:iReport 是一个开源项目,用于创建复杂的报表,...

    JasperReport 用户手册的翻译

    同时,理解如何将JasperReport与IReport结合使用,可以极大地提高报表开发的效率。尽管JasperReport的官方文档可能需要付费,但开源社区的存在意味着有许多免费资源可供学习和参考,例如这个翻译版的手册。 在实际...

    15款报表工具的总结

    - **纯Java报表工具**:这类工具完全使用Java语言编写,包括报表引擎、内核、设计器界面等所有组件,代表性工具如StyleReport、JasperReport、BIRT、FineReport、iReport、杰表等。 #### 报表工具功能对比 - **...

Global site tag (gtag.js) - Google Analytics