`
darkma
  • 浏览: 526334 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

Java web 中报表预览及打印

阅读更多
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JRParameter;
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.fill.JRFileVirtualizer;
import net.sf.jasperreports.engine.util.JRLoader;

public class ReportPrintUtil {

private JasperPrint getJasperPrint(JasperReport jReport, Map paramMap) {
        JasperPrint jPrint = null;
        try {
        // 填充报表数据
            jPrint = JasperFillManager.fillReport(jReport, paramMap, new JREmptyDataSource());
        } catch (Exception er) {
            er.printStackTrace();
        }
        return jPrint; 
    }

/**
* 支持多报表同时预览及打印
* @param request
* @param response
* @param url 报表存储(相对)路径
* @param paramMapList 报表参数值集合
*/
public void doPrint(HttpServletRequest request, HttpServletResponse response,String url, List paramMapList){
try{
List jasperPrintList = new ArrayList();
JasperReport jReport = (JasperReport) JRLoader.loadObject(getClass().getResource(url));
for (Iterator iter = paramMapList.iterator(); iter.hasNext();) {
Map paramMap = (Map) iter.next();
jasperPrintList.add(this.getJasperPrint(jReport, paramMap));
}

// 下面是在磁盘建立目录来优化内存
Map parameters = new HashMap();
        JRFileVirtualizer virtualizer = new JRFileVirtualizer(2);
        parameters.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);
        // 填充完毕,锁住磁盘
        virtualizer.setReadOnly(true);
       
        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        JRPdfExporter exporter = new JRPdfExporter();
       
        exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);
        exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
       
        exporter.exportReport();
        byte[] bytes = baos.toByteArray();
       
        // 设置报表以 pdf 格式输出
        response.setContentType("application/pdf");
        response.setContentLength(bytes.length + 10);
        ServletOutputStream ouputStream = response.getOutputStream();
        ouputStream.write(bytes, 0, bytes.length);
        ouputStream.flush();
        ouputStream.close();
}catch(Exception err){
err.printStackTrace();
}
}
}

(注:采用PDF格式打印时,需要安装相应的PDF阅读器才能进行预览。)
2
0
分享到:
评论

相关推荐

    Java实现Web报表打印功能.

    ### Java实现Web报表打印功能:基于iText组件的实践 #### 概述 在Web应用领域,打印功能一直是开发者面临的挑战之一。由于Web应用本质上属于瘦客户端架构,直接操作客户端设备(如打印机)存在限制。这促使业界...

    JasperReport+Servlet Web应用之:打印预览

    **JasperReport与Servlet在Web应用中的打印预览** JasperReport是一款强大的开源报表工具,它允许开发者在Java应用程序、Web应用甚至独立的Java应用程序中创建复杂的报告。Servlet是Java Web开发中的一个重要组件,...

    Java Web开发技术方案宝典-报表打印

    报表打印技术在Java Web开发中扮演着至关重要的角色。它不仅涉及到基础的打印功能,还包括了复杂的数据处理与格式定制。以下是几种常用的报表打印技术方案。 ##### 6.1.1 JavaScript + CSS 打印技术 **JavaScript*...

    jxl预览和打印报表

    "jxl预览和打印报表"是一种利用开源Java库——jxl来实现的功能,它能够帮助开发者高效地处理Excel格式的数据,进行报表的生成、预览以及打印操作。下面将详细阐述这一技术的知识点。 首先,jxl库是一个强大的Java ...

    java动态报表神器DynamicReports中文文档

    它尤其适合那些需要在Java Web应用中动态生成报表的场景,让开发人员能够不必深入复杂的报表设计就能快速实现报表的生成和展示。 开发人员在使用DynamicReports时,可以参考官方的API文档和示例代码来学习如何根据...

    javareport打印报表.rar(JavaReport-V3-Enterprise-Released)

    JavaReport是一款专业的报表打印工具,尤其在企业级应用中广泛使用。这个名为"javareport打印报表.rar"的压缩包包含的是JavaReport V3企业版的发布版本,根据描述,这个版本是经过验证可以正常使用的,相较于网络上...

    Java Jsp 调用ireport动态模板打印

    理解并熟练掌握这些步骤,可以实现灵活的Web报表打印功能,满足各种业务需求,尤其是对于需要动态编辑和打印热敏单的场景。在实际应用中,还需要考虑性能优化、错误处理和用户体验等方面的问题,确保系统的稳定性和...

    JasperReports -- 客户端打印(WEB网页打印)

    在Web网页打印的场景下,用户通常希望能够在浏览器中直接预览并打印报表,而无需下载到本地后再进行操作。JasperReports 提供了一种解决方案,通过使用Java Applet实现客户端打印。Applet是一种小型的Java程序,可以...

    关于Web报表FineReport打印的开发应用案例.

    在现代Web报表开发中,报表打印是一个不可或缺的功能,尤其在一些需要将报表信息整理成纸质文档的场景中显得尤为重要。FineReport作为一个广泛使用的报表工具,提供了丰富的报表打印功能,支持多种打印方式以及与...

    java好用打印控件

    Java打印控件是Java开发中用于处理打印任务的重要工具,尤其在报表和Web应用中,如JSP(JavaServer Pages)环境下,它们可以帮助开发者轻松实现数据的打印功能。标题提到的"java好用打印控件"可能是一个第三方库或者...

    Java燗applet+jasperReport 实现web端打印

    其中,打印属性的设置、JasperPrint对象的加载及打印操作是核心部分。 4. **注意事项** - 确保Applet能够正确加载所需的JasperPrint对象。 - 配置打印属性以适应不同规格的纸张。 - 处理异常情况,确保用户界面...

    Java报表工具和示例代码

    Java报表工具在数据库开发中扮演着至关重要的角色,它们能够帮助开发者从数据中提取信息,组织成可视化的报告,以供决策者分析和理解。在这个压缩包中,我们可能找到一些常用的Java报表库的示例代码,这对于学习和...

    java制作报表

    在Java编程环境中,报表制作是一项重要的任务,常用于数据分析、业务展示和决策支持。本资源包含了一份关于如何使用Java制作报表的详细指南,包括jar文件和相关文档,旨在帮助开发者高效地实现报表功能。以下是对...

    面向Web的报表_图表统计系统研究与实现.pdf

    该系统旨在解决基于B/S架构软件中的报表制作、预览、打印以及多数据源和动态统计图表等问题,已在实际项目中成功应用,满足了企业级报表系统的需求。 #### 报表系统的重要性 报表系统在企业和事业单位的信息化建设...

    Java水晶报表 Java水晶报表.ppt

    3. **集成能力**:Java水晶报表能够无缝集成到Java应用程序和Web环境中,例如JBuilder 2005。通过API调用,开发者可以在自己的应用中嵌入报表,使得应用程序具有数据可视化和分析的功能。此外,它还支持多种流行开发...

    java生成报表项目实例

    Java报表生成技术是Java开发中的重要组成部分,尤其在企业级应用中,报表的生成与展示对于数据的分析、决策制定至关重要。本项目实例基于“java生成报表项目实例”,使用了Apache POI库来处理Microsoft Office格式的...

    JAVA水晶报表帮助手册

    **Java水晶报表(Crystal Reports)**是用于设计和生成复杂报表的工具,广泛应用于企业级应用系统中。在Java环境中,通过与Eclipse IDE集成,开发者可以利用水晶报表的强大功能来创建、编辑和管理报表。这份"JAVA...

Global site tag (gtag.js) - Google Analytics