增加Jasper相关

master
chenqf 4 years ago
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();
}
}
}

@ -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…
Cancel
Save