今天剛剛弄個ireport轉pdf簡直是問題多多啊,做個記號
在制作的時候需要導入itext-1.3.1.jar、iTextAsian.jar(相關字體的jar)
由于項目吹的急從學到現在就只有1天。到手狂收索了一篇
在用ireport的時候注意要字體引用iTextAsian.jar選擇相關的屬性
text屬性中選擇STSong-Light 勾選pdf 后面在選擇UniGB-UCS2-H,做完就可以編譯。
java在調用就ok這么簡單。
導出pdf就這么簡單。
String jasper = request.getParameter("jasper");
Map parameters = new HashMap();
Map submap = new HashMap();
Enumeration enu = request.getParameterNames();
String requestname = null;
while (enu.hasMoreElements()) {
requestname = (String) enu.nextElement();
if (requestname.equals("jasper")) {// 排除optid
continue;
} else if (requestname.equals("filename")) {// 排除filename
continue;
} else if (requestname.equals("SHOW_BG")) {// 排除SHOW_BG
continue;
}
parameters.put(requestname, request.getParameter(requestname));
}
parameters.put("BaseDir", application
.getRealPath("/jsp/report/template/"));
submap.put("RYSNBH", "510000000200904280606");
parameters.put("REPORT_PARAMETERS_MAP", submap);
File reportFile = new File(application
.getRealPath("/jsp/report/template/" + jasper + ".jasper"));
net.sf.jasperreports.engine.JasperPrint jasperPrint;
Connection conn = null;
ApplicationContext ctx = WebApplicationContextUtils
.getWebApplicationContext(getServletConfig()
.getServletContext());
IIbatisDBbase ib = (IIbatisDBbase) ctx.getBean("ibatisdbbase");
conn = ib.getConn();
JasperReport jasperReport = (JasperReport) JRLoader
.loadObject(reportFile.getPath());
byte[] bytes = JasperRunManager.runReportToPdf(jasperReport,
parameters, conn);
response.reset();
response.setContentType("application/pdf");
ServletOutputStream ouputStream = response.getOutputStream();
response.setContentLength(bytes.length);
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
conn.close();