从服务器获取报表模板到html页面显示报表pdf
来源:互联网 发布:js 添加卡片效果 编辑:程序博客网 时间:2024/06/03 19:17
1、我用到的jar包为jasperreports-3.5.3jar包。制作报表模板用到的工具为:iReport-nb-3.5.0
2、首先将从数据库中获取到的数据转成list.
3、public static <T extends com.pwyec.utils.report.javabean.BasePrintEntity> JasperPrint getPrintDataSource(String path,List<T> dataSource) throwsClientProtocolException, IOException, JRException{
/*通过文件名,获得模板文件*/
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpgets = new HttpGet(path);
/*将模板文件转成流*/
HttpResponse response = httpclient.execute(httpgets);
HttpEntity entity = response.getEntity();
InputStream instreams = null;
if (entity != null) {
instreams = entity.getContent();
}
JasperReport jasperReport = JasperCompileManager.compileReport(instreams);
JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(dataSource);
Map parameters = new HashMap();
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, beanColDataSource);
return jasperPrint;
}
其中 path为模板配置文件的路径。dataSource为数据源。
用该方法将之转成JasperPrint
4、在控制器 我们拿到JasperPrint
@Token(save = true)
@RequestMapping(value = "printPdf", method = RequestMethod.GET)
public void printPdf(String id,
HttpServletRequest request, HttpServletResponse response) {
JasperPrint jasperPrint = null;
StoreJumpSession jump = (StoreJumpSession) WebUtil.getPrincipal();
IStoreSessionUser user = jump.getStoreUser();
try {
jasperPrint =getPrintDataSource(String path,List<T> dataSource);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JRException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JRPdfExporter pdfExporter = new JRPdfExporter();
pdfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
OutputStream stream = null;
ByteArrayOutputStream exportStream = new ByteArrayOutputStream();
try {
response.setCharacterEncoding("UTF-8");
response.setContentType("application/pdf");
pdfExporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
exportStream);
pdfExporter.setParameter(JRExporterParameter.CHARACTER_ENCODING,
"UTF-8");
try {
pdfExporter.exportReport();
} catch (JRException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
PdfReader reader = new PdfReader(new ByteArrayInputStream(
exportStream.toByteArray()));
stream = response.getOutputStream();
PdfStamper pdfStamper = new PdfStamper(reader, stream);
pdfStamper.setViewerPreferences(PdfWriter.HideMenubar
| PdfWriter.HideToolbar | PdfWriter.HideWindowUI);
pdfStamper.addJavaScript(PrintHelper.getPrintScript());
pdfStamper.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (exportStream != null) {
try {
exportStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public static String getPrintScript(){
StringBuffer script = new StringBuffer();
script.append("this.print({bUI: false,bSilent: true,bShrinkToFit: false});")
.append("\r\nthis.closeDoc();");
return script.toString();
}
然后在js写一个调用该控制器的方法就可以了
- 从服务器获取报表模板到html页面显示报表pdf
- Jsp页面调用Jasperreport报表模板生成pdf、excel、html
- 从页面导出报表,以CSV, doc,pdf格式
- 水晶报表直接输出到页面,不保存PDF文件
- SQL Server 2008报表服务从入门到精通pdf
- jfreechart一&二维报表导出为word&pdf&html-报表上显示百分比或数字(二)
- c#asp.net表格Html数据模板转换Pdf文件web打印pdf报表dll
- 利用poi从jsp页面导出报表到excel
- 利用poi从jsp页面导出报表到excel
- 利用poi从jsp页面导出报表到excel
- 利用poi从jsp页面导出报表到excel
- 利用poi从jsp页面导出报表到excel
- PDF报表
- ireport+jasperreport 报表html显示
- 润乾报表-页面显示
- 模板PDF报表导出的技术准备
- 报表从陌生到使用
- 页面列表导出cvs,excel、pdf报表
- 【13】Linux-驱动访问大揭秘
- js 操作cookie 添加, 获取, 删除
- Pychrm中lxml导入etree失败
- Effective Objective-C学习笔记 (持续更新)
- 基于DCMTK和OpenCV的DR图像拼接
- 从服务器获取报表模板到html页面显示报表pdf
- struts2 - execAndWait(拦截器实例)
- ajax跨域获取数据解决方案---JSON
- VC++2005下的ADO SQL语句(like,count,distinct)和操作(转)
- poj 2201(RMQ+笛卡尔树)
- iOS模拟器和真机调试时App的安装文件路径问题
- 网页响应状态码
- leetcode 13. Roman to Integer
- grep和管道符