增加Jasper相关
parent
0b586b196e
commit
a376b1b69f
@ -0,0 +1,86 @@
|
||||
package com.glxp.sale.admin.util;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
|
||||
import net.sf.jasperreports.engine.JRException;
|
||||
import net.sf.jasperreports.engine.JasperExportManager;
|
||||
import net.sf.jasperreports.engine.JasperFillManager;
|
||||
import net.sf.jasperreports.engine.JasperPrint;
|
||||
import net.sf.jasperreports.engine.JasperReport;
|
||||
import net.sf.jasperreports.engine.export.ooxml.JRDocxExporter;
|
||||
import net.sf.jasperreports.engine.query.JsonQueryExecuterFactory;
|
||||
import net.sf.jasperreports.engine.util.JRLoader;
|
||||
import net.sf.jasperreports.export.SimpleExporterInput;
|
||||
import net.sf.jasperreports.export.SimpleOutputStreamExporterOutput;
|
||||
|
||||
/**
|
||||
* Jasperreport工具类
|
||||
* @author chenqf
|
||||
* @date 2021-11-10 22:23
|
||||
*/
|
||||
@Component
|
||||
public class JasperUtils {
|
||||
private static Logger logger = LoggerFactory.getLogger(JasperUtils.class);
|
||||
|
||||
public static final String PDF_TYPE="pdf";
|
||||
public static final String WORD_TYPE="word";
|
||||
public static final String EXCEL_TYPE="excel";
|
||||
public static final String HTML_TYPE="html";
|
||||
/*
|
||||
* data 传入报表数据
|
||||
* jasperResource 模板文件路径
|
||||
*/
|
||||
public static void jasperReport(HttpServletRequest request, HttpServletResponse response,Map<String,Object> data,String jasperResource,String type) throws IOException, JRException {
|
||||
try {
|
||||
HashMap<String, Object> map = new HashMap<String, Object>();
|
||||
InputStream is = new ByteArrayInputStream(JSON.toJSONString(data).getBytes("UTF-8"));
|
||||
map.put("JSON_INPUT_STREAM", is); //填充报表数据
|
||||
map.put(JsonQueryExecuterFactory.JSON_LOCALE, Locale.ENGLISH);
|
||||
|
||||
ClassPathResource resource = new ClassPathResource(jasperResource);
|
||||
|
||||
InputStream jasperStream = resource.getInputStream();
|
||||
|
||||
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperStream);
|
||||
//报表填充
|
||||
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, map);
|
||||
String fileName = new String("export.pdf".getBytes("GBK"), "ISO8859_1");
|
||||
ServletOutputStream os = response.getOutputStream();
|
||||
response.setDateHeader("Expires", 0);
|
||||
response.setHeader("Content-disposition","attachment; filename="+fileName);
|
||||
if(type!=null&&WORD_TYPE.equals(type)) {
|
||||
response.setContentType("appliction/msword; charset=utf-8");
|
||||
JRDocxExporter exporter = new JRDocxExporter();
|
||||
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
|
||||
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(os));
|
||||
exporter.exportReport();
|
||||
} else {
|
||||
response.setContentType("application/pdf; charset=utf-8");
|
||||
JasperExportManager.exportReportToPdfStream(jasperPrint,os);
|
||||
os.flush();
|
||||
os.close();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Binary file not shown.
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<fontFamilies>
|
||||
<fontFamily name="华文宋体">
|
||||
<normal>fonts/STSONG.TTF</normal>
|
||||
<bold>fonts/STSONG.TTF</bold>
|
||||
<italic>fonts/STSONG.TTF</italic>
|
||||
<boldItalic>fonts/STSONG.TTF</boldItalic>
|
||||
<pdfEncoding>Identity-H</pdfEncoding>
|
||||
<pdfEmbedded>true</pdfEmbedded>
|
||||
<exportFonts>
|
||||
<export key="net.sf.jasperreports.html">'华文宋体', Arial, Helvetica, sans-serif</export>
|
||||
<export key="net.sf.jasperreports.xhtml">'华文宋体', Arial, Helvetica, sans-serif</export>
|
||||
</exportFonts>
|
||||
</fontFamily>
|
||||
</fontFamilies>
|
@ -0,0 +1,2 @@
|
||||
net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
|
||||
net.sf.jasperreports.extension.simple.font.families.lobstertwo=fonts/fonts.xml
|
Loading…
Reference in New Issue