All Downloads are FREE. Search and download functionalities are using the official Maven repository.

love.keeping.starter.web.utils.PrintUtil Maven / Gradle / Ivy

The newest version!
package love.keeping.starter.web.utils;

import love.keeping.starter.common.exceptions.impl.DefaultSysException;
import love.keeping.starter.common.utils.CollectionUtil;
import love.keeping.starter.web.bo.BasePrintDataBo;
import love.keeping.starter.web.dto.BaseDto;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.TemplateExceptionHandler;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class PrintUtil {

  /**
   * 获取freeMarker Template
   *
   * @param templateName
   * @return
   */
  private static Template getTemplate(String templateName) {

    Configuration cfg = new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);
    cfg.setClassForTemplateLoading(PrintUtil.class, "/");
    cfg.setDefaultEncoding("UTF-8");
    cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
    try {
      return cfg.getTemplate(templateName);
    } catch (IOException e) {
      log.error(e.getMessage(), e);
      throw new DefaultSysException(e.getMessage());
    }
  }

  /**
   * 生成打印模板的html
   *
   * @param templateName 模板名称
   * @param data         数据
   * @return
   */
  public static > String generate(String templateName,
      T data) {

    Template template = getTemplate(templateName);
    Map root = data == null ? CollectionUtil.emptyMap() : JsonUtil.convert(data, Map.class);
    StringWriter stringWriter = new StringWriter();
    BufferedWriter writer = new BufferedWriter(stringWriter);

    try {
      template.process(root, writer);
    } catch (TemplateException | IOException e) {
      log.error(e.getMessage(), e);
      throw new DefaultSysException(e.getMessage());
    }

    return stringWriter.toString();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy