diff --git a/api-admin/src/main/java/com/glxp/sale/admin/util/JasperUtils.java b/api-admin/src/main/java/com/glxp/sale/admin/util/JasperUtils.java new file mode 100644 index 0000000..a7b86c2 --- /dev/null +++ b/api-admin/src/main/java/com/glxp/sale/admin/util/JasperUtils.java @@ -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 data,String jasperResource,String type) throws IOException, JRException { + try { + HashMap map = new HashMap(); + 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(); + + } + } + +} diff --git a/api-admin/src/main/resources/fonts/STSONG.TTF b/api-admin/src/main/resources/fonts/STSONG.TTF new file mode 100644 index 0000000..3870605 Binary files /dev/null and b/api-admin/src/main/resources/fonts/STSONG.TTF differ diff --git a/api-admin/src/main/resources/fonts/fonts.xml b/api-admin/src/main/resources/fonts/fonts.xml new file mode 100644 index 0000000..789638f --- /dev/null +++ b/api-admin/src/main/resources/fonts/fonts.xml @@ -0,0 +1,15 @@ + + + + fonts/STSONG.TTF + fonts/STSONG.TTF + fonts/STSONG.TTF + fonts/STSONG.TTF + Identity-H + true + + '华文宋体', Arial, Helvetica, sans-serif + '华文宋体', Arial, Helvetica, sans-serif + + + \ No newline at end of file diff --git a/api-admin/src/main/resources/jasperreports_extension.properties b/api-admin/src/main/resources/jasperreports_extension.properties new file mode 100644 index 0000000..3ff6e4a --- /dev/null +++ b/api-admin/src/main/resources/jasperreports_extension.properties @@ -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