方式一:
package cn.com.gsoft.core.util;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.hzzk.common.entity.BaseModel;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperPrintManager;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
import cn.com.gsoft.agriculture.entity.company.Enterprise;
/**
* User: yango
*/
public class JasperUtil {
public static String getJasperPath(int type) {
String jasperpath = null ;
if(type == SysCodeConstants.ASSETS_AND_LIABILITIES){
jasperpath = "/jasper/balancesheet.jasper";
}else if(type == SysCodeConstants.CASH_FLOW){
jasperpath = "/jasper/cashflow.jasper";
}else if(type == SysCodeConstants.PROFIT_AND_LOSS){
jasperpath = "/jasper/income.jasper";
}
return jasperpath;
}
public static void jasperMethod(BaseModel bm, int type, List list, HttpServletResponse res,HttpServletRequest req, boolean print)
throws JRException {
JasperReport jr;
JasperPrint jp= null;
jr = (JasperReport)JRLoader.loadObjectFromFile(req.getSession().getServletContext().getRealPath(getJasperPath(type)));
Map<String, Object> map = new HashMap<String,Object>();
if(type == SysCodeConstants.ASSETS_AND_LIABILITIES || type == SysCodeConstants.CASH_FLOW || type == SysCodeConstants.PROFIT_AND_LOSS){
Enterprise ep = (Enterprise)bm;
map.put("title", ep.getVcenterprisename());
}
// ServletOutputStream servletOutputStream = getRes().getOutputStream();
res.setContentType("application/pdf;charset=UTF-8");
JRDataSource dataSource = new JRBeanCollectionDataSource(
list);
// 预览
if(!print){
ServletOutputStream servletOutputStream = null ;
try {
servletOutputStream = res.getOutputStream();
byte[] bytes = JasperRunManager.runReportToPdf(req.getSession().getServletContext().getRealPath(JasperUtil.getJasperPath(Integer.valueOf(type))),
map, dataSource);
System.out.println("bytes============="+bytes);
servletOutputStream.write(bytes, 0, bytes.length);
servletOutputStream.flush();
servletOutputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else{
jp = JasperFillManager.fillReport(jr, map, dataSource);
JasperPrintManager.printReport(jp, true);// 打印
}
}
}
方式二:
List list = queryResult.getResultSet();
String reportFilePath = "" ;
if(request.getParameter("stype").trim().equals("1")) {
reportFilePath = request.getRealPath("/WEB-INF/jsp/pdf/schoolstudentlog_report.jasper");
}else{
reportFilePath = request.getRealPath("/WEB-INF/jsp/pdf/studentlog_report.jasper");
}
JDataSourceUtil dataSource = new JDataSourceUtil(list);
ServletOutputStream servletOutputStream = response.getOutputStream();
byte[] bytes=JasperRunManager.runReportToPdf(reportFilePath, map_areaname ,dataSource);
response.setContentType("application/pdf");
servletOutputStream.write(bytes,0,bytes.length);
servletOutputStream.flush();
servletOutputStream.close();
return null;
直接打印:那就把pdf生成,并放在服务端上
然后使用Javascript的方式打印pdf
把以下的代码通过servlet写到客户端去