SpringBoot利用JasperReport生成PDF

阅读: 评论:0

SpringBoot利⽤JasperReport⽣成PDF
JasperReport是⼀个强⼤、灵活的报表⽣成⼯具,能够展⽰丰富的页⾯内容,并将之转换成PDF,HTML,或者XML格式。该库完全由Java写成,可以⽤于在各种Java应⽤程
序,包括J2EE,Web应⽤程序中⽣成动态内容。
⾸先我们需要在JasperSoft Studio创建⼀个我们需要⽣成的PDF模板,将模板放⼊我们的SpringBoot⼯程下。
下⾯是利⽤PDF模板⽣成binary⽂件的共通⽅法
private byte[] EmInfoReporting(HashMap<String, Object> param, List<EmInfo> data) {
InputStream input;
try {
input = new Resource("classpath:report/eminfo.jrxml").getFile());
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(data);
JasperReport jasperReport = JasperCompileManagerpileReport(input);
JasperPrint jasperPrint;
jasperPrint = JasperFillManager.fillReport(jasperReport, param, dataSource);
return  portReportToPdf(jasperPrint);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JRException e) {
e.printStackTrace();
} catch (Exception e) {nrb
e.printStackTrace();
}
return null;
}
前台Html使⽤Form表单进⾏post请求
<form id="exportPDF" th:method="POST" th:action="@{/nms/report}" target='_blank'>
<input type="text" id="id" name="id" th:value="${infoid}"/>
</form>
<a class="btn btn-link" href="javascript:exportPDF();">PDF⽣成</a>
中华民居
function exportPDF(){
var action = $("#exportPDF").attr("action");
if(action.substring(action.length - 4, action.length) !== ".pdf"){
var curDate = new Date();
var curMonth = Month()+1;
var Current = FullYear() + "-" + (curMonth < 10 ? "0" + curMonth : curMonth) + "-" + (Date() < 10 ? "0" + Date() : Date()) + " " + (Hours() < 10 ? "0" + Hours() :         $("#exportPDF").attr("action", action + "/PDF_" + place(/-/g, "").replace(/:/g, "").replace(" ", "") + ".pdf");
}
$("#exportPDF").submit();
}
Server端接收到请求后调⽤⽣成binary⽂件的共通⽅法,利⽤HttpServletResponse类输出PDF
@PostMapping("report/{filename}")
public String emInfoPdfViewPost(@RequestParam("id") int id,@PathVariable String filename,HttpServletResponse response) {
HashMap<String,Object> params=new HashMap<String,Object>();
params.put("Client_name","makoto yagi");
List<EmInfo> datasource=new ArrayList<EmInfo>();
EmInfo eminfo=emInfoService.findOne(id);
datasource.add(eminfo);
血液回收params.put("eminfo",eminfo);
byte[] output=EmInfoReporting(params,datasource);
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline;filename=" + filename);//inline 在线预览;attachment 下载
杨汇泉response.setContentLength(output.length);
OutputStream os=null;
try {
OutputStream();
os.write(output);
os.flush();
os.close();
}catch(IOException e) {孙志刚事件
}
return null;
}
⼯程的l需要追加的jar包
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.13.0</version>
</dependency>
jasperreports_extension.properties
net.istry.factory.fonts=net.ine.fonts.SimpleFontExtensionsRegistryFactory
褫夺公权net.sion.simple.font.families.ireportfamily1513178418930=l
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
<fontFamily name="ipaexm">
<normal><![CDATA[f]]></normal>
<pdfEncoding><![CDATA[Identity-H]]></pdfEncoding>
<pdfEmbedded><![CDATA[true]]></pdfEmbedded>
<exportFonts/>
</fontFamily>
<fontFamily name="ipaexg">
<normal><![CDATA[f]]></normal>
<pdfEncoding><![CDATA[Identity-H]]></pdfEncoding>
<pdfEmbedded><![CDATA[true]]></pdfEmbedded>
<exportFonts/>
</fontFamily>
</fontFamilies>

本文发布于:2023-08-15 16:20:25,感谢您对本站的认可!

本文链接:https://patent.en369.cn/xueshu/363256.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:需要   请求   动态   血液   预览   回收
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图