java导出pdf

  • 格式:pdf
  • 大小:106.38 KB
  • 文档页数:6
outputStream = response.getOutputStream(); inputStream = new FileInputStream(reportFile); JasperRunManager.runReportToPdfStream(inputStream, outputStream, map, datesource); } catch (JRException e) { (getClass(), e.getMessage()); } catch (UnsupportedEncodingException e) { (getClass(), e.getMessage()); } catch (IOException e) { (getClass(), e.getMessage()); } catch (EncodingException e) { (getClass(), e.getMessage()); }finally { try{
if (outputStream != null){ outputStream.flush();
} }catch(IOException ex){
SystemUnit.addMessageError(SystemUnit.getString("no data exist"));
}
try{ if (outputStream != null){ outputStream.close(); }
return getDateStr(getReportName()); } /** * 为保证不重复文件名 (typeName_year_month_day_hour_mill_sec_random) * @param typeName 自定义文件名 * @return */ public static String getDateStr(String typeName) {
response.setContentType("application/pdf");//FixCommonUti l.setContentType(response, "application/pdf");
httpUtil.setHeader(response, "Content-Disposition", "attachment; filename=" + en.encodeForURL(fileName));
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getR esponse();
buildPdfByJasper(request,response,headmans);
import com.attendance.bean.HeadmanBean; import com.attendance.bean.MemberBean; import com.attendance.log.Log; import com.attendance.util.SystemUnit;
public class MemberAction extends TransactionAction{ private HeadmanBean headman; private List<HeadmanBean> headmans;
package com.attendance.action;
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map;
StringBuffer sb = new StringBuffer(); Calendar date = Calendar.getInstance(); int second; int month; int dayOfMonth; int hour; int minute;
sb.append(typeName);
import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperRunManager; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource ;
context.getRealPath("/jasper/") + "/"); JRBeanCollectionDataSource datesource = new
JRBeanCollectionDataSource(headmans); String fileName = generateFileName(); response.reset();
request.getSession().getServletContext(); FacesContext ctx = FacesContext.getCurrentInstance(); ctx.responseComplete(); File reportFile = new
File(context.getRealPath("/jasper/headmanReport.jasper")); ServletOutputStream outputStream = null; InputStream inputStream = null; try { Map map = new HashMap(); map.put("SUBREPORT_DIR",
SystemUnit.addMessageError(SystemUnit.getString("no data exist"));
} } }
/** * 生成文件名,保证每一次都生产不一样的文件名 * @return */ public static String generateFileName() {
import javax.faces.context.FacesContext; import javax.faces.event.ActionEvent; import javax.servlet.ServletContext; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
sb.append("0"); } sb.append(dayOfMonth); sb.append("_");
hour = date.get(Calendar.HOUR_OF_DAY); if (hour < 10) {
sb.append("0"); } sb.append(hour);
minute = date.get(Calendar.MINUTE); if (minute < 10) {
import org.owasp.esapi.Encoder; import org.owasp.esapi.HTTPUtilities; import org.owasp.esapi.Randomizer; import org.owasp.esapi.errors.EncodingException; import org.owasp.esapi.reference.DefaultEncoder; import org.owasp.esapi.reference.DefaultHTTPUtilities; import org.owasp.esapi.reference.DefaultRandomizer;
} /** * 创建组长以及成员 */ private void createMember() {
headmans = new ArrayList<HeadmanBean>(); headman = new HeadmanBean(); headman.setUsername("zhangsan"); headman.setContent("这是一个神奇的网站"); headman.setEntryDate(new Date());
sb.append("_"); sb.append(date.get(Calendar.YEAR));
month = date.get(Calendar.MONTH) + 1; if (month < 10) {
sb.append("0"); } sb.append(month);
dayOfMonth = date.get(Calendar.DAY_OF_MONTH); if (dayOfMonth < 10) {
List<MemberBean> members = new ArrayList<MemberBean>(); for(int i=0;i<10;i++) {