zoukankan      html  css  js  c++  java
  • Jasper打印示例

    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

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

    import com.htf.ap.security.operatelog.annotation.OperateLog;
    import com.htf.common.businessconfig.invoice.InvoicePrintModel;
    import com.htf.framework.webutil.xwork.annotation.Action;
    import com.opensymphony.webwork.ServletActionContext;

    import net.sf.jasperreports.engine.JRDataSource;
    import net.sf.jasperreports.engine.JRException;
    import net.sf.jasperreports.engine.JRExporterParameter;
    import net.sf.jasperreports.engine.JasperFillManager;
    import net.sf.jasperreports.engine.JasperPrint;
    import net.sf.jasperreports.engine.JasperReport;
    import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
    import net.sf.jasperreports.engine.export.JRPdfExporter;
    import net.sf.jasperreports.engine.util.JRLoader;

    public class JasperPrintUtil {

    /**
    * 生成JasperPrint
    *
    * @param list 数据源
    * @param pathMap报表
    * @return JasperPrint list
    */
    public static <T> List<JasperPrint> createJasperPrint(List<T> list,
    Map<String, String> pathMap, String path, Map<String, Object> paramMap) {
    List<JasperPrint> printList = new ArrayList<JasperPrint>();
    if (list != null && pathMap != null) {
    List<T> dataList = new ArrayList<T>();
    try {
    for (String kn : pathMap.keySet()) {
    dataList.addAll(list);
    ServletContext context = ServletActionContext.getRequest().getSession()
    .getServletContext();
    String file = context.getRealPath(pathMap.get(kn));
    JasperReport report = (JasperReport) JRLoader.loadObject(file);
    JRDataSource source = new JRBeanCollectionDataSource(dataList);
    Map<String, Object> imgMap = paramMap;
    JasperPrint print = JasperFillManager.fillReport(report, imgMap, source);
    if (print != null) printList.add(print);
    //imgMap.clear();
    dataList.clear();
    }
    } catch (JRException e) {
    e.printStackTrace();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    return printList;
    }

    /**
    * 打印JasperPrint 修改:打印有返回值,以方便调用时判断传递不同的打印参数
    *
    * @param JasperPrint list
    * @return
    */
    public static int print(List<JasperPrint> list) {
    int flag = -1;// 默认打印失败,1打印成功
    ServletOutputStream out = null;
    try {
    if (list == null) {
    return flag;
    }
    HttpServletResponse response = ServletActionContext.getResponse();
    out = response.getOutputStream();
    response.setContentType("application/pdf");
    JRPdfExporter exporter = new JRPdfExporter();
    exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, list);
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
    exporter.exportReport();
    out.flush();
    flag = 1;
    return flag;
    } catch (JRException e) {
    e.printStackTrace();
    return flag;
    } catch (IOException e) {
    e.printStackTrace();
    return flag;
    } /*finally {刘燕明注释:方便上层调用此方法时可以重新判断打印
    IOUtil.close(out);
    }*/
    }

    }

    /**
    * 打印贷款申请审批表

    * @date 2017-3-18
    */
    @SuppressWarnings("unchecked")
    @OperateLog(moduleName="打印贷款申请审批表", content = "打印贷款申请审批表")
    @Action(name="LoanApplyAction_goLoanApplyAppPrint")
    public String goLoanApplyAppPrint() {
    Long tempId = model.getTempId();
    Long stateId = model.getStateId();
    //stateId = 4310441L;
    // InvoicePrintModel invoicePrintModel = loanApplyBPO.findLoanApplyAppPrintContext(tempId, stateId);
    InvoicePrintModel invoicePrintModel = new InvoicePrintModel();
    List<String> list = new ArrayList<String>();
    list.add("aa");
    invoicePrintModel.setDataList(list);
    //定义Map集
    Map<String, String> pathMap = new HashMap<String, String>();
    pathMap.put("a1", "/gjj-pl/pages/g3/gjj/pl/jasper/LoanApplyAppReport1.jasper");
    pathMap.put("a2", "/gjj-pl/pages/g3/gjj/pl/jasper/LoanApprove.jasper");
    //调用打印方法
    JasperPrintUtil.print(JasperPrintUtil.createJasperPrint(
    invoicePrintModel.getDataList(), pathMap, null,
    invoicePrintModel.getContext()));
    //this.print(this.createJasperPrint(invoicePrintModel.getDataList(), pathMap, null,invoicePrintModel.getContext()));
    return NONE;
    }

    流程 创建jasper  然后调用export方法打印jasper对象。

  • 相关阅读:
    字符编码相关
    函数之形参与实参
    文件操作模式
    函数对象,名称空间,作用域,和闭包
    吴裕雄天生自然SPRINGBOOT开发实战处理'spring.datasource.url' is not specified and no embedded datasource could be autoconfigured
    吴裕雄天生自然SPRINGBOOT开发实战处理XXXX that could not be found.
    吴裕雄天生自然SPRINGBOOT开发实战SpringBoot HTML表单登录
    吴裕雄天生自然SPRINGBOOT开发实战SpringBoot REST示例
    吴裕雄天生自然SpringBoot开发实战学习笔记处理 Could not write metadata for '/Servers'.metadata\.plugins\org.eclipse.core.resources\.projects\Servers\.markers.snap (系统找不到指定的路径。)
    吴裕雄天生自然SPRINGBOOT开发实战SpringBoot Tomcat部署
  • 原文地址:https://www.cnblogs.com/UUUz/p/9365716.html
Copyright © 2011-2022 走看看